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