Ограничение потребления ресурсов процессов в Unix

Материал из support.qbpro.ru

Обзор

Запуск нескольких процессов в наших системах Linux требует от них совместного использования ресурсов, таких как центральный процессор, оперативная память и дисковое пространство. Чтобы избежать зависания ресурсоемких процессов, приводящих к зависанию системы, мы можем пожелать ограничить ресурсы, потребляемые другими процессами. В этом руководстве мы узнаем, как добавить ограничения в отношении процессора, оперативной памяти и дискового пространства. Мы будем использовать такие команды, как ulimit, cgroups, systemd-run, ionice, и nice. В некоторых случаях для выполнения этих команд потребуются разрешения суперпользователя.

Использование systemd-run

systemd-run - это системный менеджер и менеджер служб, доступный напрямую в большинстве дистрибутивов Linux. Он занимается запуском процессов, служб и демонов. Этот инструмент позволяет нам добавлять ограничения непосредственно к конкретному процессу, который мы хотим запустить.

  • Например, мы можем запустить процесс с ограничением в 1 ГБ оперативной памяти:
systemd-run --scope -p MemoryLimit=1000M ./myProcess.sh

Здесь, myProcess.sh был запущен с помощью systemd-run и может обращаться только к указанной оперативной памяти.

  • Мы также можем использовать это, чтобы заставить процесс использовать только максимальный процент процессора:
systemd-run --scope -p CPUQuota=10% ./myProcess.sh
  • systemd-run позволяет нам сочетать ограничение как процессора, так и памяти:
systemd-run --scope -p MemoryLimit=1000M -p CPUQuota=10% ./myProcess.sh

Использование ulimit

ulimit позволяет нам перезаписывать или создавать ограничения на оперативную память и дисковое пространство. Это встроенная функция оболочки bash.