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

swappiness swap

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

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

cat /proc/swaps
# 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последовательно выполнить две операции -

  1. swapoff /dev/dm-2) выключить своп - при этом все выгруженные из RAM данные вернутся с диска обратно в оперативную память. Делаем командой: swapoff -a (или конкретно по устройству:
  2. включить своп обратно командой swapon.

Это целесообразно делать только в том случае, если объем свободной RAM больше, чем объем своп-области.

В параметрах ядра есть параметр vm.swappiness, который определяет границу перехода из ОЗУ в дисковый своп.

Он измеряется в процентах. В Ubuntu 14.04 LTS этот параметр имеет дефолтное значение 60. 

Это означает, что, как только остается менее 40%  свободной оперативной памяти, будет активирован режим своппинга и новые данные начнут перемещаться сразу на дискwa.

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

aizaro@mail.ru  22.05.2018