Назад | Перейти на главную страницу

Перемещение процесса в своп и обратно

На моем Linux-сервере есть несколько процессов серверного типа, которые используют 50 МБ ОЗУ. Они не используются постоянно, и я хотел бы иметь возможность запускать больше экземпляров, чем позволяет мой объем оперативной памяти. Я хочу иметь возможность удалить процесс из ОЗУ и переместить его в раздел подкачки диска. Предоставляет ли ядро ​​Linux что-нибудь для точной настройки подкачки для каждого процесса?

Ядро Linux предоставляет через proc файловая система свойство, которое определяет, насколько агрессивно страницы памяти (только анонимные!) выгружаются на диск.

В vm.swappiness свойство применяется глобально для каждой системы, но не для каждого процесса. Установите низкое значение, если вы хотите, насколько это возможно, избежать подкачки. Если ваш системный процесс находится в спящем режиме в течение длительного времени, вы можете выиграть от агрессивного поведения подкачки, увеличив это значение.

Вы можете временно изменить его из интерфейса командной строки (он не переживет перезагрузку системы)

echo 90 > /proc/sys/vm/swappiness

Или настойчиво с добавлением этой строчки в /etc/sysctl.conf

vm.swappiness=90

И применяя это с

sysctl -p

Или можно сделать его более детальным с помощью cgroups и объем памяти подсистема, если ваша система работает на новейшем ядре Linux (начиная с версии 2.6.24?!?). Предположим, у вас есть иерархия cgroup с объем памяти подключенная подсистема (/ cgroups / mem) и cgroup (/ cgroups / mem / your_cgroup) с определенными задачами / процессами (/ cgroups / mem / your_cgroup / tasks). Затем вы можете изменить обмен поведение для этой группы задач следующее:

cd /cgroups/mem/your_cgroup
echo 90 > memory.swappiness

Для получения дополнительной информации о подсистеме памяти вы можете прочитать, например, Руководство по ресурсам RedHat.

Вы не умнее подсистемы виртуальной машины ядра. Просто оставьте процессы в покое, и если они действительно останутся неиспользованными, они будут заменены, и вам не придется ничего делать.