Как ограничить процессы в процентах ЦП на Linux

Что такое Cpulimit

Cpulimit — это инструмент, который ограничивает использование ЦП процессом (выражается в процентах, а не во времени ЦП). Полезно контролировать разное ПО, когда вы не хотите, чтобы они потребляли слишком много % от процессора. Цель состоит в том, чтобы не допустить, чтобы процесс выполнялся дольше указанного времени. Это не изменяет значение nice или другие настройки приоритета планирования, а изменяет реальное использование ЦП. Кроме того, он способен динамически и быстро адаптироваться к общей нагрузке системы. Контроль используемого количества ЦП осуществляется путем отправки процессам сигналов SIGSTOP и SIGCONT POSIX. Все дочерние процессы и потоки указанного процесса будут совместно использовать один и тот же процент ЦП.

Как установить Cpulimit

Сначала заходим на наш сервер и выполняем команду:

Ubuntu/Debian: apt install cpulimit
CentOS/RHEL: yum install cpulimit

Как ограничить процессы в процентах ЦП на Linux

Мы ограничиваем использование ЦП с помощью параметра —limit или -l, чтобы установить процент использования для процесса. Прежде чем ограничивать использование ЦП, нам нужно найти процесс который использует все время ЦП.

Запускаем команду «top» и смотрим какой процесс делает самую большую нагрузку на ЦП.
Дальше мы смотрим какой PID у него и запускаем команду, чтобы ограничить использование ЦП этого процесса (где указано process_pid, мы указываем PID нашего процесса, а где указано cpu — мы указываем проценты)

cpulimit -p process_pid -l 20
Как ограничить процессы в процентах ЦП на Linux

Мы видим что «cpulimit» увидел что такой процесс существует, затем открываем еще одно соединение с сервером и смотрим заново нагрузку с командой «top»

Как ограничить процессы в процентах ЦП на Linux

Как видим, процесс действительно теперь использует не все 100% от ЦП, а 23% (немного больше чем мы указали.

Чтобы «cpulimit» продолжал ограничивать процесс на фоне когда мы отсоединимся с сервера, мы к команде добавляем еще —background или -b, чтобы команда выглядела так:

cpulimit -p process_pid -l 20 -b

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

Другие инструкции по теме