Як налаштувати заміщення?


345

Мені потрібен покроковий, простий і простий спосіб налаштування простоти.


17
Один лайнерsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar

8
@redanimalwar вам також потрібно запустити, sudo sysctl -pщоб завантажити нове значення заміщення з файлу sysctl.conf, інакше зміна стосується лише наступного перезавантаження.
waldyrious

Відповіді:


509

Ядро Linux надає налаштовану настройку, яка керує тим, як часто використовується файл swap, називається swappiness.

Якщо встановити нульовий параметр нуля, це означає, що диск буде уникнути, якщо це абсолютно не потрібно (у вас не вистачає пам'яті), тоді як налаштування простоти 100 означає, що програми будуть замінені на диск майже миттєво.

Система Ubuntu поставляється за замовчуванням 60, це означає, що файл swap буде використовуватися досить часто, якщо використання пам'яті становить близько половини моєї оперативної пам’яті. Ви можете перевірити значення своєї власної системи за допомогою запуску:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

Оскільки у мене є 4 ГБ оперативної пам’яті, я хотів би зменшити це на 10 або 15. Файл swap тоді буде використовуватися лише тоді, коли моє використання оперативної пам’яті становить приблизно 80 або 90 відсотків. Щоб змінити значення заміщення системи, відкрийте /etc/sysctl.confяк root . Потім змініть або додайте цей рядок у файл:

vm.swappiness = 10

Перезавантажте, щоб зміни вступили в силу.

Ви також можете змінити значення, поки ваша система все ще працює з:

sysctl vm.swappiness=10

Ви також можете очистити свій swap, запустивши swapoff -aі потім swapon -aяк root замість перезавантаження, щоб досягти того ж ефекту.

Для обчислення формули своп:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

тому загальна сума становить 3950/100 = 39,5 * 10 = 395

Отже, що означає, що коли залишиться 10% (395 Мб) оперативної пам'яті, він почне використовувати своп.


                                          Довідка. Ubuntu. Зміна

                                           Що таке заміщення

Параметр swappiness контролює схильність ядра до переміщення процесів з фізичної пам'яті та на диск обміну. Оскільки диски набагато повільніше, ніж оперативна пам'ять, це може призвести до уповільнення часу реакції для системи та додатків, якщо процеси надто агресивно переміщуються з пам'яті.

  • swappiness може мати значення від 0 до 100.
  • swappiness=0:
    • Версія ядра 3.5 і новіші: вимикає заміну.
    • Версія ядра старше 3,5 років: дозволяє уникнути заміни процесів з фізичної пам'яті якомога довше.
  • swappiness=1:
    • Версія ядра 3.5 і новіших версій: мінімальна простота, не вимикаючи її повністю.
  • swappiness=100:
    • Повідомляє ядро ​​агресивно витісняти процеси з фізичної пам’яті та переміщувати їх в обмін кешами.

Дивіться http://en.wikipedia.org/wiki/Swappiness .

За замовчуванням в Ubuntu є swappiness=60. Зниження значення замовчування за замовчуванням, ймовірно, покращить загальну продуктивність для типової установки на робочому столі Ubuntu. Значення swappiness=10рекомендується, але сміливо експериментуйте.


Приклад

Почав використовувати своп на 91% :

введіть тут опис зображення Оскільки я налаштував свою систему & vm для використання оперативної пам’яті на 90% , на 90% не було заміни.

Після цього я відкрив деякі програми, такі як Firefox & Shutter, і він почав мінятися, оскільки використання оперативної пам’яті вище 90% .


118
Swappiness 100 не змушує програм замінятися відразу, а також значення 60 або 90 означає, що своп не використовується, коли таран заповнений на 60 або 90%. Це співвідношення переваг для крадіжок сторінок з кешу порівняно з заміною речей, щоб звільнити деяку кількість пам'яті, коли її недостатньо. Низьке значення сильно віддасть перевагу крадіжкам сторінок із кеша, а високе значення настійно вважає за краще спробувати і замінити сторінки. Налаштування має будь-який ефект, коли пам'ять (майже) використовується, і ядро ​​повинно вибрати, як звільнити її.
psusi

67
Потрібно зазначити, що оперативна пам’ять, яка НЕ ​​зайнята запущеними програмами, використовується як кеш диска ... так, зменшуючи свобідність, ви збільшуєте шанс програми не замінюватися, але в той же час зменшуєте розмір дискового кешу, що може зробити доступ до диска повільніше. Тож наслідки цього налаштування на фактичну ефективність не такі прості ... Ви можете, звичайно, експериментувати, але я підозрюю, що типові параметри встановлюються людьми, які достатньо розуміють тему :)
Сергій

14
@Sergey і іронія цього полягає в тому, що ті, хто має невелику оперативну пам’ять, найімовірніше спробують кожен трюк, який вони можуть натрапити на підвищення продуктивності, і, швидше за все, це люди, для яких 60 і навіть вище будуть найкращими показниками. Ті з нас, які встановили його на 10, тому що ми в тоннах оперативної пам’яті набираємо не стільки, скільки втрачаємо, якщо це зробимо.
Джон Ханна

6
@Freedom_Ben: Дивіться linuxatemyram.com :)
Сергій

5
Щойно залишаючи подібну дискусію тут - unix.stackexchange.com/questions/88693/…
Ілля Лінн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.