Debian swap vm.swappiness = 0, есть ли подводные камни?

Ссылка скопирована
24 апреля 2026 1 ответ

День добрый . Имеем debian 12+ postgres от 1с pro (для размещения баз 1с - небольшой зуп для пары бухов).
Собственно заметил что при свободной оперативке (16 гб ) используется swap.

sysctl -a | grep swappin
vm.swappiness = 60

Получается при занятости оперативки на 40% - начинает использоваться swap.

По идее, нужно изменить значение по умолчанию на 0 - использовать раздел подкачки только если нет места в оперативно памяти ?

Есть ли какие нибудь нюансы ?

Дополнительно:

Если памяти много, то никаких.

  • Понял, спасибо за ответ. По памяти 16 Гб но если что можно на proxe будет добавить.
  • Linux все равно будет вытеснять память в своп, даже при малых значениях swappiness. И если оперативной памяти много, а своп на HDD, то это может вылиться в весьма существенные проблемы с производительностью, вплоть до аварийных остановок БД (наблюдал такое на сервере с БД Oracle). Однако такие проблемы хорошо устраняются уменьшением vm.swappiness до разумного значения (10 - 25) и включением подкачки в RAM со сжатием в дополнение к свопингу на диск. Процесс не представляет из себя ничего сложного и описан на https://wiki.debian.org/ZRam
  • Дмитрий, диск под базы SSD. Пока остановился на vm.swappiness = 0 . Периодически мониторю( в течении 3 часов) swap использоваться перестал.
  • Андрей, Вот Дмитрий Вам правильно говорит про 10-25,у меня 8г на ноуте,vm.swappiness = 60,настроено сжатие zswap,запущена система и 2-3 виртуалки,в своп иногда попадает 200-300 MB всего.А лучше сами посмотрите https://habr.com/ru/companies/flant/articles/348324/ почему не стоит в ноль ставить.
  • r1412s, спасибо за ссылки. Попробую для начала vm.swappiness = 1 . А дальше, как грится война покажет.
  • Получается при занятости оперативки на 40% - начинает использоваться swap.

    Вы связали это значение с vm.swappiness? У него регулировка от 0 до 200. От 0 до 100 предпочтение вымещению файлового кеша, а от 100 до 200 — сбросу данных в swap.

    Устанавливая vm.swappiness = 0, вы заставляете вымещать файловый кеш, потенциально может обернуться thrashing'ом.

  • ValdikSS, не совсем понял.
    Значение которое было по умолчанию (свап выедался весь)

    sysctl -a | grep swappin
    vm.swappiness = 60

    Сделал vm.swappiness = 1 (Теперь swap от4 мб до 200 подымается, но максимум редко)

  • Андрей,
    Теперь у вас чаще отбрасывается файловый кеш в угоду данным в оперативной памяти, чтобы затем через короткое время снова прочитаться с диска. Это создаст дополнительную нагрузку на диск и потенциально увеличит задержки, т.к. код программы — тоже файловый кеш. Если вам именно это и нужно, то всё в порядке.
  • Гмм - изначально проблема была в том что активно юзался swap при свободной оперативке в 16 ГБ (значение по умолчанию vm.swappiness = 60) . Потому и решил уменьшить значение чтобы разрузить swap. Получаю делаю не правильно ?
  • Андрей, то, что используется swap, это не проблема. Он так и должен работать, если у вас не хватает оперативной памяти одновременно на весь файловый кеш и все данные в памяти.
    При нехватке памяти либо вытесняется менее используемый файловый кеш, либо сбрасываются данные в swap. Вы вашей настройкой отдали предпочтение первому.
  • vm.swappiness = 60

    Получается при занятости оперативки на 40% - начинает использоваться swap.

    при vm.swappiness = 60
    swap начинает использоваться . при занятости на 40% (от суммы размера ОЗУ + размер файла/раздела подкачки),
    те. если у вас 8GB ОЗУ и 8GB swap, то свопинг начнётся при загрузке памяти 40% от 16GB,
    я обычно держу 1GB файл подкачки при 8GB оперативки
    и использую vm.swappiness = 10,
    но как то раз, мне не хватило оперативки, после чего я увеличил размер swapfile до 4GB

  • SVM, нет.

    Оперативная память начинает освобождаться, когда достигнута граница зоны (где эта граница можно посмотреть в /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 и прочие параметры ядра пока не разберёшься, с тем что они делают и даже тогда не стоит их трогать - в лучшем случае ничего не измениться, но скорее всего ты сделаешь хуже.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Максим Павлов Ответ

    Изменение параметра 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 может быть полезным решением в определенных случаях, но необходимо внимательно оценить все вышеперечисленные риски и учитывать особенности вашей системы и используемого программного обеспечения.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно