Ограничение использования памяти и минимизация использования свопа в Unix / Linux

У меня есть несколько машин, которые я использую для выполнения большого количества заданий, где я пытаюсь ограничить количество заданий, чтобы не превышать доступную оперативную память машины. Иногда я неверно оцениваю объем памяти, занимаемый некоторыми заданиями, и машина начинает уничтожать файл подкачки. Я разрешаю это, отправив kill -s STOP на одном из рабочих мест, чтобы он мог быть заменен.

Кто-нибудь знает утилиту, которая будет отслеживать сервер на наличие процессов с определенным именем, а затем приостанавливать ту, которая занимает наименьший объем памяти, если общее потребление памяти достигает желаемого порога, так что большие могут работать и завершаться с минимумом подкачка файла подкачки? Приостановленные процессы должны быть возобновлены после завершения некоторых существующих процессов.

1 ответ

Взгляните на thrash-protect (демон написан на Python)

  • он не делает то, что вам нужно, но он идентифицирует поведение перестановки на всем сервере, затем пытается определить процессы, вызывающие это, и отправляет им сигнал STOP, чтобы заморозить их.
  • затем он посылает сигнал CONT, чтобы разморозить их.

Если вы не хотите использовать это как есть, это может быть основой для пользовательского сценария, который приостанавливает процесс с наименьшим объемом памяти.

Делать это вручную

Для тех, кто не любит автоматизированный инструмент, вы можете просто использовать htop найти процессы с самым высоким процентом использования памяти и отправить им сигнал STOP с kill -s STOP <pid>, Тогда позже вы можете отправить kill -s CONT <pid> возобновить их. Тем не менее, вам может потребоваться долгое время, чтобы htop и kill выполнялись при перегрузке сервера.

Эта проблема

Когда машина зависает из-за нехватки памяти, вы, как правило, видите очень низкую пропускную способность, несмотря на низкую загрузку ЦП.

Чтобы диагностировать это:

  • Требуется ли десятки секунд или даже минут для запуска простой команды оболочки?
  • в top или же htop, широко ли используется своп, высокая загрузка и средняя загрузка процессора?
  • Существуют ли высокие показатели обмена / обмена? Бежать vmstat 1 и искать si а также so значения, особенно от 2 до 4 цифр каждую секунду, без секунд с заменой на ноль.
Другие вопросы по тегам