Как настроить перестановку?

345

Мне нужен пошаговый, простой и легкий способ настройки перестановки.

Один ноль
источник
17
Один лайнерsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar
8
@redanimalwar, вам также нужно запустить, sudo sysctl -pчтобы загрузить новое значение подкачки из файла sysctl.conf, в противном случае изменение вступит в силу только при следующей перезагрузке.
Waldyrious

Ответы:

510

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

Значение swappiness от нуля означает , что диск не будет предотвращен , если это абсолютно необходимо (вы бежите из памяти), в то время как установка swappiness из 100 означает , что программы будут заменены на диск почти мгновенно.

В системе Ubuntu по умолчанию установлено значение 60, что означает, что файл подкачки будет использоваться довольно часто, если использование памяти составляет около половины моей оперативной памяти. Вы можете проверить значение swapiness вашей собственной системы, запустив:

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

Поскольку у меня есть 4 ГБ ОЗУ, я бы хотел уменьшить это значение до 10 или 15. Файл подкачки будет использоваться только тогда, когда мое использование ОЗУ составляет около 80 или 90 процентов. Чтобы изменить значение системной подкачки, откройте /etc/sysctl.confкак root . Затем измените или добавьте эту строку в файл:

vm.swappiness = 10

Перезагрузитесь, чтобы изменения вступили в силу.

Вы также можете изменить значение, пока ваша система еще работает с:

sysctl vm.swappiness=10

Вы также можете очистить свой своп, запустив его, 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 МБ) оперативной памяти, он начнет использовать своп.


                                          Помогите . Убунту. Поменять местами

                                           Что такое перестановка

Параметр 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. Снижение значения swappiness по умолчанию, вероятно, улучшит общую производительность типовой установки Ubuntu на рабочем столе. Значение swappiness=10рекомендуется, но не стесняйтесь экспериментировать.


пример

Начал использовать своп на 91% :

введите описание изображения здесь Поскольку я сконфигурировал свою систему & vm для использования ОЗУ на 90% , на 90% не было перестановки.

После этого я открыл несколько приложений, таких как Firefox & Shutter, и он начал обмениваться, потому что использование ОЗУ превышает 90% .

Один ноль
источник
118
Перестановка 100 не приводит к немедленной замене программ, а также значение 60 или 90 не означает, что подкачка используется, когда оперативная память заполнена на 60 или 90%. Это соотношение предпочтений кражи страниц из кеша и замены мест для освобождения памяти, когда ее недостаточно. Низкое значение сильно предпочтет кражу страниц из кэша, а высокое значение настоятельно предпочтет попробовать обменять страницы. Настройка действует только после того, как память (почти) полностью использована, и ядро ​​должно выбрать, как освободить часть памяти.
psusi
67
Вы должны указать, что ОЗУ, которое НЕ занято работающими программами, используется в качестве дискового кэша ... поэтому, уменьшая перестановку, вы увеличиваете вероятность того, что программа не будет выгружена, но в то же время уменьшаете размер дискового кэша, который может замедлить доступ к диску. Таким образом, влияние этого параметра на реальную производительность не так однозначно ... конечно, вы можете поэкспериментировать, но я подозреваю, что значения по умолчанию устанавливаются людьми, которые достаточно хорошо понимают предмет :)
Sergey
14
@ Сергей и ирония этого в том, что те, у кого мало оперативной памяти, скорее всего, попробуют все приемы, с которыми они могут столкнуться, чтобы повысить производительность, и, скорее всего, это будут люди, для которых 60 или даже выше будет лучшим показателем. Те из нас, кто установил его на 10, потому что у нас тонны оперативной памяти, не получают столько, сколько потеряют, если сделают это.
Джон Ханна
6
@Freedom_Ben: см. Linuxatemyram.com :)
Сергей
5
Просто оставляю подобное обсуждение здесь - unix.stackexchange.com/questions/88693/…
Элайджа Линн