Назад | Перейти на главную страницу

Linux переходит на свопинг, пока установлено много оперативной памяти

У меня есть Linux-бокс, который используется как хранилище SAN. Он оснащен 14 жесткими дисками SATA, и единственное программное обеспечение, которое он запускает, - iscsi target и zabbix agent. Это физическая коробка, а не виртуальная машина.

Установленный размер ОЗУ составляет 128 ГБ, подкачка составляла 4 ГБ, и никто никогда не заботился о ее размере, когда ОЗУ довольно велико, но по мере запуска коробки (время безотказной работы 694 дня) своп использовался все больше и больше, и теперь он использовался на ~ 80%.

Htop не покажет ничего плохого, похоже, ОС использует оперативную память в качестве кеша и т. Д. swappiness был установлен на 10, затем на 1, ничего не помогло. Конечно, я могу полностью отключить своп, но похоже, что это будет плохой ход.

Итак, мой вопрос прост: как я могу настроить блок на использование ОЗУ, а не на подкачку, и почему он вообще использует подкачку, когда ОЗУ достаточно?

Это SAN, поэтому он обслуживает блоки, а не файлы, поэтому кеширование может быть выполнено на блочной основе, и его можно легко уменьшить, если объем оперативной памяти ограничен, в любом случае это не повлияет на логику iSCSI.

Zabbix говорит, что сейчас у меня есть доступная RAM = 123,22 ГБ (эй, почти все 128 ГБ!), Используемый swap составляет 3,24 ГБ из 4 ГБ.

Нет проблем. Даже если есть доступная оперативная память, ядро ​​Linux переместит страницы памяти, которые почти никогда не используются, в пространство подкачки.

Полезно заменять страницы памяти, которые некоторое время были неактивными, сохраняя часто используемые данные в кеше; это желаемая ситуация ядра.

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

Вы можете найти эти настройки в /etc/sysctl.conf.