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

Своп используется, когда оперативная память почти наполовину свободна

Сегодня заметил, что нашел такую ​​вещь:

Как видите, оперативная память почти наполовину свободна, а пространство подкачки используется очень высоко. Исходя из моих школьных знаний, я привык думать, что ОС Linux пытается наилучшим образом использовать оперативную память, и когда ей не хватает ОЗУ, она перемещает некоторые из наименее используемых страниц из ОЗУ в пространство подкачки.

Может ли кто-нибудь объяснить мне, если мои теоретические знания неверны, и объяснить мне, как в мире Linux это действительно работает.

Хотя верно то, что ядро ​​использует подкачку, даже если память может быть оставлена, использование более двух третей ее может быть индикатором того, что исторически на сервере могла быть нехватка памяти, и именно поэтому он начал подкачку. Я бы связал использование подкачки с использованием памяти в отчетах sar, чтобы определить, достаточно ли оперативной памяти в системе. Я бы также проверил dmesg или журналы, чтобы определить, действительно ли на сервере закончилась память, и сработал oom-killer.

Ядро Linux начинает выгружать страницы памяти, даже если у вас много свободной оперативной памяти. Вы можете точно настроить это поведение, установив настраиваемую подкачку.

http://en.wikipedia.org/wiki/Swappiness

Для серверов я бы рекомендовал установить swappiness на 1, если у вас всегда достаточно памяти для вашей рабочей нагрузки. Для рабочих станций я бы рекомендовал использовать значение по умолчанию 60.

# check the current value
cat /proc/sys/vm/swappiness
60

# swappiness = 1 (swap only if necessary)
echo 1 > /proc/sys/vm/swappiness

# or use sysctl
sysctl -w vm.swappiness=1

Сделайте настройку постоянной в /etc/sysctl.conf, установив

vm.swappiness=1

и перезагрузите его

sysctl -w

Некоторые приложения, к сожалению, забивают своп напрямую, намеренно пропуская оперативную память. Глядя на тебя, Хром (и в какой-то момент Фотошоп). Единственный способ запретить замену этих приложений - запустить их без раздела подкачки. Даже swappiness 0 IIRC все равно предоставит им доступ, поскольку они явно этого требуют.

Однако изменение подкачки, как указано выше, будет работать для всего остального. Я бы предложил значение 10-20 вместо 1.