Заметка о vm.swappiness
vm.swappiness задаёт относительную стоимость выгрузки анонимных страниц в swap
по сравнению с освобождением файлового кеша. Это не процент занятой или свободной
памяти и не порог включения swap: значение 60 не означает, что swap включится
при занятии 40% RAM.
В документации ядра Linux
описан диапазон 0–200. Значение по умолчанию — 60; подходящее значение зависит от
нагрузки и скорости swap относительно файловой системы. Значение 5 ниже —
пример настройки, а не универсальная рекомендация для сервера. Для zram или
быстрого swap могут быть уместны значения выше 100.
Проверим текущее значение:
$ cat /proc/sys/vm/swappiness
60
$ sysctl -a | grep swappiness
vm.swappiness = 60Для того, чтобы изменить это положение дел, нужно добавить в файл /etc/sysctl.conf строку vm.swappiness=5. Если следовать рекомендациям в файле /etc/sysctl.d/README.sysctl, то правильным выбором будет создание файла в директории /etc/sysctl.d/*.conf.
Для локальных изменений создим файл /etc/sysctl.d/local.conf со строкой vm.swappiness=5 и применим изменения:
$ sudo sysctl -p --load /etc/sysctl.d/local.confПроверим текущее значение снова:
$ cat /proc/sys/vm/swappiness
5
$ sysctl -a | grep swappiness
vm.swappiness = 5При нагрузке на систему следует обратить внимание на параметр swout в atop и на то, как долго висит большое значение в swout.
Посмотрим с интервалом в 1 секунду:
$ atop aA 1man atop: If the number of pages swapped out (‘swout’ in the PAG-line) is larger than 10 per second, the memory resource is considered ‘critical’. A value of at least 1 per second is considered ‘almost critical’.
PAG: swin - количество загруженных страниц памяти из дискового кеша
PAG: swout - количество выгруженных страниц памяти на дисковый кеш