Почему система выполняет подкачку, хотя оперативной памяти достаточно, и вредно ли это?

Почему система выполняет подкачку, хотя оперативной памяти достаточно, и вредно ли это?

Я работаю на сервере Ubuntu 16.04 root bare metal с 64 ГБ ОЗУ и SSD, который находится под довольно большой нагрузкой. Теперь я узнал, что облачные серверы обычно отключают подкачку, так как она может изнашивать SSD в долгосрочной перспективе. Это заставляет меня беспокоиться о моем сервере, так как он подкачивает, когда в этом нет необходимости, так как доступно достаточно ОЗУ.

Скриншот панели инструментовздесь

Это нормально или вы бы рекомендовали принять меры, например, отключить подкачку?

решение1

Короткий ответ:да, это нормально и вам не нужно об этом беспокоиться.

Длинный ответ:Linux использует немного подкачки, даже если доступно достаточно памяти. Обоснование в том, что кэширование недавно прочитанных/записанных данных может быть более полезным, чем хранение старого, неактивного программного кода и данных в оперативной памяти. Это смещение можно изменить с помощью swappinessнастраиваемого sysctl. ИзДокументация ядра:

подкупность

Этот элемент управления используется для определения того, насколько агрессивно ядро ​​будет производить подкачку страниц памяти. Более высокие значения увеличат агрессивность, более низкие значения уменьшат объем подкачки. Значение 0 предписывает ядру не инициировать подкачку, пока количество свободных и поддерживаемых файлами страниц не станет меньше верхней отметки в зоне.

Значение по умолчанию — 60.

Если вы действительно хотите сократить подкачку, вы можете уменьшить swappinessзначение черезsysctl vm.swappiness=10 или echo 10 > /proc/sys/vm/swappiness. Помните, что это действительно до перезагрузки; чтобы сохранить его между перезагрузками, вам необходимо отредактировать файл /etc/sysctl.conf.

Если вы хотите полностью отключить подкачку, вы можете использовать swapoff -a(закомментировав соответствующую /etc/fstabзапись, чтобы она сохранялась между перезагрузками).

решение2

Не кричите только потому, что Linux меняет ОС,фактическив здоровом сервере этосовершенно нормально, если даже не признак оптимизированного сервера.Это потому, что «низкий» обмен можетиногда экономит вам и вашим дискам драгоценные действия ввода-вывода на дискахЧем меньше действий выполняется на диске (дорогостоящие процессы даже на современных массивах NVMe), тем лучше.

Такжеесли только обмен не агрессивныйэто нанесет незначительный вред SSD. Особенно много SSD, которые используются для облаков,рассчитан на работу в диапазоне PB(s) до того, как все клетки умрут.

решение3

Память выделяется и освобождается все время, и это приводит к фрагментации: за частью выделенной памяти следует часть невыделенной памяти и так далее. Невыделенные (свободные) части памяти могут становиться все меньше и меньше с течением времени. В какой-то момент процессу может потребоваться выделить некоторый объем памяти, который недоступен как единый непрерывный блок. Подкачка помогает освободить память и создать более крупные непрерывные части свободной памяти, которые в противном случае были бы недоступны.

Связанный контент