Как ограничить использование ЦПУ определенной программой

В некоторых случаях в Linux может понадобиться ограничить программу в использовании процессора. Когда у нас слабое железо и требуется выполнить длительный и ресурсоёмкий процесс например. Для этого воспользуемся утилиткой cpulimit, для начала установим её:

sudo apt install cpulimit

Синтаксис использования:

cpulimit [ЦЕЛЬ] [ОПЦИИ...] [-- ПРОГРАММА С ОПЦИЯМИ]
ЦЕЛЬ должна быть в точности чем-то из:
   -p, --pid=N        pid процесса
   -e, --exe=ФАЙЛ     имя исполнимого файла программы
                      Опция -e работает только если
                      cpulimit запущена с правами администратора.
   -P, --path=ПУТЬ    абсолютный путь
                      до исполнимой программы
ОПЦИИ
   -b  --background   запуск в фоне
   -f  --foreground   запуск целевого процесса в фоне и ожидание его выхода
   -c  --cpu=N        переписать определение ЦПУ на машине
   -l, --limit=N      разрешённые для использования проценты cpu.
                      На одноядерных системах от 1 - 100, на многоядерных системах
                      может быть выше (обязательная опция)
   -m, --monitor-forks  Просмотр детей/форков целевого процесса
   -q, --quiet        запуск в тихом режиме (печатаются только ошибки).
   -k, --kill         завершить процесс, выходящий за лимиты
                      вместо того, чтобы ограничивать его.
   -r, --restore      Восстановить процессы, после того, как они
                      были завершены. Работает с флагом -k.
   -s, --signal=SIG   Отправить этот сигнал наблюдаемому процессу, когда cpulimit выходит.
                      Сигнал должен быть указан как номер, или 
                      SIGTERM, SIGCONT, SIGSTOP и т.д. SIGCONT это значение по умолчанию.
   -v, --verbose      показать контрольную статистику
   -z, --lazy         выйти если нет подходящего целевого процесса,
                      или если он завершился
       --             Это финальная опция CPUlimit. Все последующие
                      опции предназначены для другой запускаемой программы.
   -h, --help         показать справку и выйти

Контроль использования количества CPU выполняется отправкой процессу сигналов SIGSTOP и SIGCONT

Например запуск firefox и контроль использования программой 25% процессора:

sudo cpulimit -l 25 -- firefox

Или ограничим 50% цпу процесс с pid 1234

sudo cpulimit -p 1234 -l 50

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *