Debian swap vm.swappiness = 0, есть ли подводные камни?
День добрый . Имеем debian 12+ postgres от 1с pro (для размещения баз 1с - небольшой зуп для пары бухов).
Собственно заметил что при свободной оперативке (16 гб ) используется swap.
sysctl -a | grep swappin
vm.swappiness = 60
Получается при занятости оперативки на 40% - начинает использоваться swap.
По идее, нужно изменить значение по умолчанию на 0 - использовать раздел подкачки только если нет места в оперативно памяти ?
Есть ли какие нибудь нюансы ?
Дополнительно:
Если памяти много, то никаких.
Получается при занятости оперативки на 40% - начинает использоваться swap.
Вы связали это значение с vm.swappiness? У него регулировка от 0 до 200. От 0 до 100 предпочтение вымещению файлового кеша, а от 100 до 200 — сбросу данных в swap.
Устанавливая vm.swappiness = 0, вы заставляете вымещать файловый кеш, потенциально может обернуться thrashing'ом.
Значение которое было по умолчанию (свап выедался весь)
sysctl -a | grep swappin
vm.swappiness = 60
Сделал vm.swappiness = 1 (Теперь swap от4 мб до 200 подымается, но максимум редко)
Теперь у вас чаще отбрасывается файловый кеш в угоду данным в оперативной памяти, чтобы затем через короткое время снова прочитаться с диска. Это создаст дополнительную нагрузку на диск и потенциально увеличит задержки, т.к. код программы — тоже файловый кеш. Если вам именно это и нужно, то всё в порядке.
При нехватке памяти либо вытесняется менее используемый файловый кеш, либо сбрасываются данные в swap. Вы вашей настройкой отдали предпочтение первому.
vm.swappiness = 60
Получается при занятости оперативки на 40% - начинает использоваться swap.
при vm.swappiness = 60
swap начинает использоваться . при занятости на 40% (от суммы размера ОЗУ + размер файла/раздела подкачки),
те. если у вас 8GB ОЗУ и 8GB swap, то свопинг начнётся при загрузке памяти 40% от 16GB,
я обычно держу 1GB файл подкачки при 8GB оперативки
и использую vm.swappiness = 10,
но как то раз, мне не хватило оперативки, после чего я увеличил размер swapfile до 4GB
Оперативная память начинает освобождаться, когда достигнута граница зоны (где эта граница можно посмотреть в /proc/zoneinfo), а вот будут ли записаны страницы фалового кеша в файл или анонимная страница в swap и определяется соотношением vm.swappiness.
Ну выставил ты vm.swappiness = 10 и что данные из оперативной памяти перестали писаться на диск? Коенечно нет, просто теперь предпочтение будет отдаваться страницам файлового кеша, а не анонимным страницам, да ты будешь видеть, что в swap пишется меньше данных, но какой в этом смысл ведь все остальные данные, которые могут быть выгружены из оперативной памяти просто записываются в файлы.
PS
Подробности What Is Swappiness on Linux?
данные на диск (в своп) не перестали писаться,
но т.к. у меня размер диска всего 120Гб
и памяти 8Гб,
я никогда не забивал память до упора ))
у меня нет таких задач,
поэтому своп, как таковой мне вообще не нужен,
пригодился только один раз, когда выкачивал всю свою ленту из coub.com,
поэтому, если был бы диск больше, я бы добавил свопа 8гб,
а если бы было памяти 16,
то я бы его вообще не использовал никогда
Ответы:
Получается при занятости оперативки на 40% - начинает использоваться swap.
Нет.
vm.swappiness не связан с тем, когда надо использовать swap, более того - это даже не процент оперативки, а соотношение страниц памяти занятых под файловый кеш и анонимных страниц памяти (анонимные это те в которых хранятся данные порождённые в процессе работы программы и не имеющие отображения на диске - переменные грубо говоря).
Если выставить vm.swappiness равным нулю, то сначала будет выгружен на диск весь возможный файловый кеш и только после этого в swap будут выгружены анонимные страницы (а в swap выгружаются только анонимные страницы).
Если vm.swappiness равен 100, то на одну страницу файлового кеша будет выгружена одна старница анонимного кеша в swap.
И в свежих ядрах vm.swappiness может быть выставлен в 200, то есть ситуация диаметрально противоположная vm.swappiness выставленному в 0 - сначала будет сброшен в swap весь анонимный кеш и только потом начнёт выгружаться на диск файловый кеш.
Остав в покое vm.swappiness и прочие параметры ядра пока не разберёшься, с тем что они делают и даже тогда не стоит их трогать - в лучшем случае ничего не измениться, но скорее всего ты сделаешь хуже.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Изменение параметра vm.swappiness на 0 на Debian системе может быть полезным в определенных сценариях, особенно если у вас есть большое количество оперативной памяти и вам не нужно использовать swap space. Однако, есть несколько подводных камней, которые стоит учитывать:
1. Отключение swap space может привести к исчерпанию оперативной памяти: если ваша система начнет использовать всю доступную оперативную память и не будет иметь возможности использовать swap space для временного хранения данных, это может привести к сбоям и нестабильной работе системы.
2. Некоторые приложения могут зависеть от наличия swap space: некоторые программы могут ожидать наличия swap space для оптимальной работы, и отключение swap space может привести к проблемам с их функционированием.
3. Некоторые процессы могут быть приостановлены: если ваша система начнет использовать всю оперативную память, и swap space отключен, то Linux может приостановить или завершить некоторые процессы для освобождения памяти.
4. Система может работать медленнее: в некоторых случаях использование swap space может улучшить производительность, так как оперативная память может быть использована для кэширования данных, что помогает избежать повторной загрузки данных из диска.
В целом, отключение swap space на Debian системе с параметром vm.swappiness = 0 может быть полезным решением в определенных случаях, но необходимо внимательно оценить все вышеперечисленные риски и учитывать особенности вашей системы и используемого программного обеспечения.