Определение простыми словами
Swappiness – это настройка ядра Linux, которая регулирует, насколько активно система будет использовать файл подкачки (swap) при загрузке памяти. При низком значении swappiness, система старается использовать оперативную память максимально, а своп применяется только при критической нехватке ОЗУ. При высоком значении своп активно используется даже при достаточном объеме свободной оперативной памяти. Это помогает избежать отказов из-за отсутствия памяти, но может замедлить работу из-за обращения к медленному диску.
Параметр swappiness задаётся числом от 0 до 100, где 0 — минимальное использование свопа, 100 — максимальное предпочтение свопу. Обычно по умолчанию стоит значение 60, что подходит для большинства сценариев, но в некоторых случаях полезно менять это поведение для улучшения производительности.
Сравнение
| Значение Swappiness | Поведение системы | Когда использовать |
|---|---|---|
| 0-10 | Минимальное использование свопа; предпочитается оперативная память | Системы с большим объемом оперативной памяти или важна максимальная производительность |
| 20-60 | Сбалансированное использование оперативной памяти и свопа | Общие серверы и рабочие станции для стабильной работы |
| 70-100 | Активное использование свопа даже при свободной памяти | Системы с ограниченной оперативной памятью, где важно избежать ошибок из-за нехватки памяти |
Кейсы использования
- Настройка сервера баз данных с большим объемом RAM для уменьшения лагов — swappiness ставят 10 или ниже.
- Виртуальные машины с ограниченной памятью для предотвращения Out-Of-Memory — swappiness повышается до 60-80.
- Работа контейнеров с переменной нагрузкой — динамическая настройка swappiness для адаптации.
- Развертывание compute-intensive приложений, где важна отзывчивость — низкий swappiness.
- Негативный пример: На рабочих станциях со SSD установка слишком высокого swappiness приводит к повышенному износу диска и замедлению работы.
Технические детали
Параметр swappiness можно изменить временно или постоянно:
# Просмотр текущего значения swappiness
cat /proc/sys/vm/swappiness
# Временное изменение значения (до перезагрузки)
echo 10 > /proc/sys/vm/swappiness
# Постоянное изменение в /etc/sysctl.conf
vm.swappiness=10
# Применение изменений
sysctl -p
Swappiness управляет балансом между использованием оперативной памяти и файла подкачки с учётом нагрузок и типа хранения данных. При настройке важно учитывать характеристики оборудования и специфику приложений.
Подробнее об overcommit, балансе памяти и виртуальных машинах в нашем глоссарии.
🔥 Где это применяется
Частые вопросы
Что такое swappiness?
Swappiness — это параметр Linux, который регулирует, как часто система использует swap вместо оперативной памяти.
Как изменить значение swappiness?
Значение swappiness можно изменить временно через /proc/sys/vm/swappiness или постоянно в файле /etc/sysctl.conf.
Какое значение swappiness считается оптимальным?
Оптимальное значение зависит от задачи, но обычно варьируется от 10 до 60, для балансировки между производительностью и стабильностью.