Поиск по сайту:

Ограничьте использование ЦП процессом в Linux с помощью инструмента CPULimit


В предыдущей статье мы объяснили CPUTool для ограничения и контроля использования ЦП любым процессом в Linux. Это позволяет системному администратору прервать выполнение процесса (или группы процессов), если загрузка ЦП/системы превышает определенный порог. Здесь мы научимся использовать аналогичный инструмент под названием cpulimit.

Cpulimit используется для ограничения использования процессора процессом так же, как CPUTool, однако он предлагает больше возможностей использования по сравнению со своим аналогом. Важным отличием является то, что cpulimit не управляет загрузкой системы, в отличие от cputool.

Рекомендуется к прочтению: 9 полезных команд для получения информации о процессоре в Linux

Установите CPULimit, чтобы ограничить использование ЦП процессом в Linux

CPULimit доступен для установки из репозиториев программного обеспечения по умолчанию Debian/Ubuntu и его производных с помощью инструмента управления пакетами.

sudo apt install cpulimit

В RHEL/CentOS и Fedora вам необходимо сначала включить репозиторий EPEL, а затем установить cpulimit, как показано.

# ням, установи epel-release
# ням, установи лимит процессора

Ограничение использования процессора процессом с помощью CUPLimit

В этом подразделе мы объясним, как работает cpulimit. Во-первых, давайте запустим команду (ту же команду dd, которую мы рассматривали при рассмотрении cputool), которая должна привести к высокому проценту загрузки ЦП в фоновом режиме (обратите внимание, что PID процесса распечатывается после запуска команды). .

dd if=/dev/zero of=/dev/null &

[1] 17918

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

top

Глядя на выходные данные выше, мы видим, что процесс dd использует самый высокий процент процессорного времени 100,0%.

Но мы можем ограничить это, используя cputlimit следующим образом. Параметр --pid или -p используется для указания PID, а --limit или -l является используется для установки процента использования процесса.

Приведенная ниже команда ограничит команду dd (PID 17918) до 50% использования одного ядра ЦП.

sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

Запустив cpulimit, мы сможем просмотреть текущую загрузку ЦП для команды dd с помощью Top или Glies. Судя по выходным данным, значение варьируется в пределах (51,5%–55,0% или немного больше).

Мы можем ограничить использование ЦП во второй раз следующим образом, на этот раз еще больше снизив процент следующим образом:

sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

Как и раньше, мы можем запустить команду top или Glies, чтобы просмотреть новое использование ЦП для процесса, которое будет находиться в диапазоне 20%-25,0% или немного выше этого значения.

top

Примечание. Оболочка становится неинтерактивной — не ожидает ввода данных пользователем во время работы cpulimit. Чтобы уничтожить его (что должно остановить операцию ограничения использования ЦП), нажмите [Ctrl + C].

Чтобы запустить cpulimit в качестве фонового процесса, используйте переключатель --background или -b, освобождая терминал.

sudo cpulimit --pid 17918 --limit 20 --background

Чтобы указать количество ядер ЦП, присутствующих в системе, используйте флаг --cpu или -c (обычно он определяется автоматически).

sudo cpulimit --pid 17918 --limit 20 --cpu 4

Вместо того, чтобы ограничивать использование процессора процессом, мы можем завершить его с помощью опции --kill или -k. По умолчанию в процесс отправляется сигнал SIGCONT, но чтобы отправить другой сигнал, используйте флаг --signal или -s.

sudo cpulimit --pid 17918 --limit 20 --kill 

Чтобы выйти, если нет подходящего целевого процесса или в случае его смерти, включите -z или --lazy, как показано ниже.

sudo cpulimit --pid 17918 --limit 20 --kill --lazy

Дополнительную информацию и варианты использования можно найти на странице руководства cpulimit.

man cpulimit

Ознакомьтесь со следующими полезными руководствами для поиска информации о процессоре и мониторинга производительности процессора/системы.

  1. Найдите самые запущенные процессы по максимальному использованию памяти и процессора в Linux
  2. Cpustat — отслеживает загрузку процессора путем запуска процессов в Linux.
  3. CoreFreq — мощный инструмент мониторинга процессора для систем Linux
  4. Найдите самые запущенные процессы по максимальному использованию памяти и процессора в Linux
  5. 20 инструментов командной строки для мониторинга производительности Linux
  6. 13 инструментов мониторинга производительности Linux – часть 2

Для сравнения, после тестирования CPUTool и CPULimit мы заметили, что первый предлагает более эффективную и надежную функцию «ограничения использования ЦП процессом».

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