В отличии от Windows, где управлять без костылей можно только размерами и расположением swap файла, в Linux можно регулировать многое. Причем, и в той и в другой ОС совсем отключать swap не рекомендуется.
Как я уже писал, стандартные настройки Linux и Debian Linux подразумевают, что ОС может быть применена как в десктопном, так и в серверном или даже встраиваемом сценарии. Потому стандартные настройки полезно изменить в зависимости от того как конкретно будет использоваться ОС в зависимости от количества доступных ресурсов.
Настройка политики использования swap файла одна из таких полезных настроек. Дело в том, что стандартные настройки Debian (и не только) Linux диктуют следующее поведение системы:
Как только примерно 40% оперативной памяти компьютера оказывается заполнено, ОС начинает активно использовать swap, чтобы выгружать не часто (относительно) используемое в файл. Таким образом память еще и на половину не заполнена, а уже начинаются лишние обращения к диску, что заметно снижают производительность системы.
В некоторых серверных сценариях использования ОС Linux это оправдано, а в случае с простым пользовательским компьютером или ноутбуком это нехорошо.
Какая политика использования swap наиболее предпочтительна для обычного ПК?
Скорее всего оптимальным будет вариант, когда компьютер максимально использует оперативную память и лишь в случае, когда ее объективно не хватает, начинал что-то перебрасывать в swap.
Сложности с подобной настройкой Debian никакой нет. За политику использования swap отвечает переменная окружения vm.swappiness:
vm.swappiness = 0 - использовать swap в крайнем случае, когда уж не осталось свободного ОЗУ (RAM)
vm.swappiness = 60 - значение по умолчанию, как раз и приводящее к началу использования swap при 40% занятой ОЗУ.
vm.swappiness = 100 - агрессивное использование swap, когда памяти в системе мало, а работать как-то нужно.
Тут надо определиться с понятиями "много" и "мало". В случае с домашними ПК, памяти обычно "много". То есть достаточно для того, чтобы большую часть времени работать не оспользуя swap. "Мало" памяти обычно во встраиваемых устройствах типа роутеров, точек доступа и пр. И то, не всегда режим агрессивного swap оказывается эффективен.
Потому с большой долей вероятности для большинства ПК подойдет настройка vm.swappiness = 0 .
Осталось понять куда ее запихнуть, чтобы с перезагрузкой компьютера или его включением данная политика использовалась сразу.
На просторах интернета рекомендуют отредактировать файл /etc/sysctl.conf, внеся туда значение переменной. Но то ли рекомендаторы сами давно не заглядывали в каталог /etc, то ли просто копипастят друг у друга рекомендации без раздумий.
Файла /etc/sysctl.conf уже давно в Debian Linux нет. Но не спешите его создавать. Это не требуется. Если по аналогии с названием sysctl поискать в каталоге /etc, то обнаружится интересное:
Есть каталог с похожим названием и он содержит 2 файла. Вернее линк и файл, но нам в данном случае это без разницы.
Причем файл README.sysctl любопытным даже стоит почитать. А для тех кому "ехать" достаточно отредактировать подсвеченную конструкцию, вписав нужное нам значение переменной окружения:
Для редактирования нужны права root. Далее сохраняем файл.
Чтобы изменения применились в текущей сессии незамедлительно, а не только после перезагрузки компьютера, даем команду:
sysctl -p
На этом все. Вы отлично справились.
_______________________________________________________________________________
Если статья оказалась полезной, то возможно и другие статьи моего цикла оптимизаций производительности системы вам пригодятся: