Найти в Дзене
Жизнь под Debian Linux

Оптимизация политики использования swap файла в Linux

В отличии от 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, то обнаружится интересное:

mc - друг, товарищ и братиша...
mc - друг, товарищ и братиша...

Есть каталог с похожим названием и он содержит 2 файла. Вернее линк и файл, но нам в данном случае это без разницы.

-2

Причем файл README.sysctl любопытным даже стоит почитать. А для тех кому "ехать" достаточно отредактировать подсвеченную конструкцию, вписав нужное нам значение переменной окружения:

-3

Для редактирования нужны права root. Далее сохраняем файл.

Чтобы изменения применились в текущей сессии незамедлительно, а не только после перезагрузки компьютера, даем команду:

sysctl -p

На этом все. Вы отлично справились.

_______________________________________________________________________________

Если статья оказалась полезной, то возможно и другие статьи моего цикла оптимизаций производительности системы вам пригодятся:

Тонкая настройка Debian Linux