Управление своппированием

Прежде всего надо посмотреть подробности о swap.

# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       96927740        23506276        -1
или

free -m
# free -m
             total       used       free     shared    buffers     cached
Mem:        386723     346181      40542         13        175        957
-/+ buffers/cache:     345048      41675
Swap:        23383      23383          0

Здесь видно, что 23Gb используется под своппирование, хотя есть 40Gb свободной RAM.
Это могло произойти в том случае, если была пиковая загрузка.
Например, на хост-системе были временно запущены несколько мощных ВМ, которые заняли все свободную RAM, и, тем самым, спровоцировали  переход на своппирование. Затем эти ВМ были удалены, но swap так и остался задействованным.
Это негативно сказывается на производительности работы сервера, т.к. повышает нагрузку на дисковую подсистему хоста. Чтобы исправить ситуацию, надо paпоследовательно выполнить две операции. выключить своп - при этом все выгруженные из RAM данные вернутся с диска обратно в оперативную память.
Делаем командой swapoff конкретно по устройству.

swapoff /dev/dm2
После этого, можно включить своп обратно командой swapon. Это целесообразно делать только в том случае, если объем свободной RAM больше, чем объем своп-области.
В параметрах ядра есть параметр vm.swappiness, который определяет границу перехода из ОЗУ в дисковый своп.
Он измеряется в процентах и, как правило, имеет дефолтное значение 60.  Это означает, что, как только остается менее 40%  свободной оперативной памяти, будет активирован режим своппинга и новые данные начнут перемещаться сразу на дискa.

vm.swappiness Описание
0 ядро будет использовать файл подкачки только в том случае, если значение свободной RAM будет меньше указанного в параметре vm.min_free_kbytes.
1 минимальное использование файла подкачки без его отключения
10 увеличение производительности при наличии достаточного объема RAM
60 значение по умолчанию
100 интенсивное использование файла подкачки - не рекомендуется

В нашем случае лучше изменить параметр vm.swappiness до 10.

Делаем это командой:

sysctl -w vm.swappiness=10

Чтобы этот параметр ядра сохранился и после перезагрузки системы, надо добавить этот параметр в файл /etc/sysctl.conf

vi /etc/sysctl.conf

Добавим строку в конец файла:

vm.swappiness = 10

Опубликовано: 22.05.2018