В некоторых случаях в 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