Linux: память свободна, но используется своп. Почему?

11

Вот диаграммы Мунина.

Использование памяти: http://koryagin.com/w/q/memory-day.png

Поменяйте местами вход / выход: http://koryagin.com/w/q/swap-day.png

Почему Linux решает увеличить кэш и использовать подкачку, когда объем оперативной памяти намного больше, чем объем памяти, используемый программами?

Павел Корягин
источник
2
Подсистема виртуальных машин Linux в последние несколько лет была очень настроена для использования буферного пространства и кэш-памяти; приложения, занимающие память, но ничего не делающие, будут перетасовываться на диск. Это увеличивает отзывчивость и производительность. Если вы не видите проблем с производительностью, вам действительно не нужно беспокоиться об этом.
Барт Сильверстрим

Ответы:

17

Ваш сервер, вероятно, имеет некоторые неактивные и / или неактивные процессы, имеющие много неактивных страниц. Ядро Linux предпочитает заменять неактивные части программ, поскольку, скорее всего, память лучше использовать в качестве кеша.

Если вы хотите изменить это поведение, vm.swappinessпоиграйтесь с настраиваемым sysctl, но будьте осторожны, перехитрить разработчиков ядра / сопровождающих дистрибутивов не так просто. :-)

У вас есть проблемы с производительностью на вашем сервере во время этого скачка подкачки или вы спросили из любопытства?

Янне Пиккарайнен
источник
У меня нет проблем с производительностью на этом конкретном сервере. Но в другой, где ситуация не так ясна, я думаю о том, что делать. Может ли какая-то логика управления памятью Linux быть причиной сбоев PHP-FPM, если они не соответствуют ни одной из известных проблем PHP? Так что, в общем, в пользу любопытства.
Павел Корягин
Кстати, этот сервер интенсивно обрабатывает очень небольшое количество данных с фиксированным набором сценариев, поэтому он не должен иметь интенсивного ввода-вывода. Так почему же Linux хочет иметь такой большой кеш?
Павел Корягин
Linux сильно кэширует файлы, метаданные файлов, записи каталогов и так далее. Попробуйте команду slabtop.
Янне Пиккарайнен,
Большое спасибо. Понадобится время, чтобы понять, что делать с slabtopинформацией.
Павел Корягин
Пусть это запускается на весь экран, когда ваш босс проходит мимо вашей кабины и превращается в гуру в его / ее глазах. :-) Еще одна приятная команда «ооо, это, конечно, сложно понять» находится systat -vmstatво FreeBSD (возможно, и в других BSD).
Янне Пиккарайнен
1

Вам следует попробовать поиграть с параметром swappiness . Как вы можете видеть, ваша система начала подкачку, когда она пыталась увеличить размер файлового кэша, это нормально, если swappines не равен 0.

Alex
источник