У нас есть сервер CentOS 7, который немного переходит в свопинг примерно раз в неделю, несмотря на то, что у него> 20 ГБ доступной памяти, а для swappiness установлено значение 0. Мы хотим иметь возможность использовать своп как своего рода дозор, который мы запускаем. из памяти, не беспокоясь о запуске убийцы OOM.
Что еще может привести к тому, что система перейдет в режим подкачки, и что помимо подкачки мы можем сделать, чтобы предотвратить ее подкачку?
Свопинг не означает, что у вас заканчивается память. Это признак того, что страницы памяти перемещаются.
При перемещении областей памяти для различных целей (будь то дефрагментация, выгрузка простаивающих страниц или оптимизация какого-либо другого типа) самый простой и эффективный способ сделать это - поместить их в своп, а затем повторно выделить в первичную память. когда (или обычно раньше) это действительно необходимо. Некоторые приложения могут заставить этот процесс решать внутренние проблемы, такие как чрезмерная фрагментация памяти. Это произойдет, несмотря на настройку подкачки.
Обнуление swappiness только гарантирует, что вместо возможности проактивно отправлять незанятые страницы для обмена, все отправляется на него сразу во время критического события OOM. Swap обычно не может писать достаточно быстро, чтобы решить эту проблему, и затем OOMkiller запускает процессы съемки в голове. Логика, которую он использует для этого, несколько агрессивна, и он, вероятно, в конечном итоге попытается убить init, если что-то занято.
Таким образом, вместо увеличения производительности, это гарантирует, что ваша машина выйдет из строя, если у нее закончится память (даже если это почти все бездействующие страницы, которые ничего не делают), независимо от того, сколько у вас фактически есть свопа. Это также увеличит фрагментацию памяти, снизив производительность и стабильность во многих сценариях.
Если вы не хотите, чтобы машина когда-либо обменивалась или перелистывала страницу, не ставьте на нее свопинг. Это плохая идея в большинстве сценариев, но может быть подходящей для бездисковых систем и НЕКОТОРЫХ виртуализированных рабочих нагрузок.
Если вы хотите ограничить свопинг в системе, чтобы потенциально уменьшить задержки приложений, установите swappiness примерно на 10. Это для систем с избытком памяти, таких как ваша.
Если вы хотите узнать, не хватает ли памяти вашей машине, укажите на нее фактический мониторинг.
то, что у вас есть выделенный своп, не означает, что происходит обмен IN / OUT. Проверьте vmstat
чтобы узнать, происходит ли подкачка. а поскольку для swappiness установлено значение 0, это, скорее всего, пустой своп.
посмотреть на ценности si
и so
для входа / выхода в vmstat
утилита.