Недавно я видел коробку (на самом деле, виртуальную машину веб-сервера), у которой в ее swap-файле неиспользуется ровно 0 (ноль) байт, в то время как доступная оперативная память (которая не свободна, а представляет собой сумму свободной памяти+буферов+кэша) составляет 60% от общей оперативной памяти виртуальной машины. Никогда раньше такого не видел, поэтому задумался, хорошая ли это конфигурация (для коробки и приложений).
Администратор виртуальной машины сказал мне, что он относится к этому совершенно нормально, и это его обычный способ настройки коробок.
Его идея заключалась в том, что если в памяти Box много холодных страниц оперативной памяти, ядро извлечет их, чтобы освободить «реальные» страницы оперативной памяти и использовать их для кэширования данных.
Что касается меня, я знал, что swap — это последнее, что нужно использовать, если мы хотим иметь быстрый ящик. Поэтому я устанавливал swappiness на более низкие значения (чтобы ядро не хотело выгружать страницы), но подход этого человека был таков: хорошо выгружать столько данных, сколько у нас есть места подкачки, таким образом, имея больше кэша. И да, сказал он, ядро может кэшировать также выгруженные страницы, поэтому нет смысла оставлять swap свободным.
Пожалуйста, успокойте меня по этому поводу: следует ли максимально использовать seap виртуальной машины и освобождать оперативную память таким образом, чтобы кэш ядра на диске мог использоваться более эффективно?
Если быть точным, то на данный момент имелось: 1 ГБ пространства подкачки (использовано на 100%), у виртуальной машины 32 ГБ оперативной памяти, а доступной оперативной памяти было 13 ГБ.
решение1
Небольшой объем подкачки (1 ГиБ — это мало по сравнению с 32 ГиБ ОЗУ) используется полностью. Это означает именно то, что описал администратор виртуальной машины: учитывая доступность ОЗУ, все, что попадает в подкачку, не используется, и лучше оставить это там и использовать соответствующую физическую память для более важных целей — будь то активные рабочие нагрузки или дисковый кэш.
Чрезмерное использование подкачки вызывает беспокойство только в том случае, если объем подкачки велик или если страницы подкачиваются из-за нехватки памяти, и, что еще важнее, если подкачкаактивностьэто важно,то естьесли vmstat
показывает, что страницы постоянно подкачиваются и выгружаются. Это говорит о том, что система перегружена, тратя время на вытеснение страниц, только чтобы снова их подкачивать; это происходит, когда объем оперативной памяти слишком мал для рабочей нагрузки системы.
Система, на которой я это пишу, имеет немного больше подкачки и находится в похожей ситуации с вашей виртуальной машиной:
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
Однако интерактивная производительность хорошая, и vmstat
активность подкачки не наблюдается.