CPUTool – Ограничение и управление использованием ЦП любого процесса в Linux

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

A number of these tools simply output the system state/statistics while a few others provide you means of managing system performance. One such tool called CPUTool.

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

Как работает CPUTool?

Для ограничения использования ЦП cputool отправляет сигналы SIGSTOP и SIGCONT процессам, и это определяется нагрузкой на систему. Он полагается на псевдофайловую систему /proc для чтения PID и их показателей использования ЦП.

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

Рекомендуемое чтение: Понимание средних загрузок Linux и мониторинг производительности Linux

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

A CPUTool is only available to install on Debian/Ubuntu and its derivatives from the default system repositories using package management tool.

$ sudo apt install cputool

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

Теперь давайте посмотрим, как на самом деле работает cputool. Чтобы продемонстрировать это, мы запустим команду dd, которая должна привести к высокому проценту использования ЦП в фоновом режиме и отобразить его PID.

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

Для мониторинга использования ЦП мы можем использовать инструменты top или glances, которые позволяют нам просматривать регулярно обновляемое состояние процессов запущенной системы Linux в реальном времени:

# top
Monitor dd Command CPU Usage

Из вывода выше мы видим, что команда dd имеет самый высокий процент времени ЦП 99.7%) Теперь мы можем ограничить это, используя cputool, как показано ниже.

Флаг --cpu-limit или -c используется для установки процентного использования для процесса или группы процессов, а -p для указания PID. Следующая команда ограничит команду dd (PID 8275) до 50% использования одного ядра ЦП:

# cputool --cpu-limit 50 -p 8275 

После запуска cputool мы можем проверить новое использование ЦП для процесса (PID 8275) еще раз. Теперь использование ЦП для процесса dd должно колебаться от (49.0%-52.0%).

# top
Limit Process CPU to 50% Usage

Чтобы дополнительно ограничить использование ЦП dd до 20%, мы можем запустить cputool во второй раз:

# cputool --cpu-limit 20 -p 8275 

Затем немедленно проверьте с помощью инструментов, таких как top или glances, вот так (использование ЦП для dd сейчас должно быть в диапазоне от 19.0%-22.0% или немного больше этого):

# top
Limit Process CPU Usage to 20%

Обратите внимание, что оболочка не ожидает ввода пользователя во время выполнения cputool; поэтому становится нереагирующей. Чтобы его завершить (это прервёт операцию ограничения использования ЦП), нажмите Ctrl + C.

Важно указать группу процессов (одна программа с несколькими запущенными экземплярами, каждый с отдельным PID), например, веб-сервер HTTP:

# pidof apache2
9592 3643 3642 3641 3640 3638 3637 1780

Используйте флаг -P вот так:

# cputool --cpu-limit 20 -P 1780

Ограничение загрузки системы с помощью CUPTool

Опция -l используется для указания максимальной загрузки, которую система может перенести для продолжения работы процесса или группы процессов. Можно использовать дробное значение (например, 2.5).

Пример ниже означает запуск rsync для локального резервного копирования только при условии, что загрузка системы не превышает 3.5:

# cputool --load-limit 3.5 --rsync -av /home/tecmint /backup/`date +%Y-%m-%d`/

Для получения дополнительной информации и использования ознакомьтесь с страницей руководства CPUTool:

# man cputool

Обратите внимание на следующие полезные руководства по поиску информации о ЦП и мониторингу производительности ЦП:

  1. 9 Полезных команд для получения информации о ЦП в Linux
  2. Cpustat – Мониторинг использования ЦП запущенными процессами в Linux
  3. CoreFreq – Мощный инструмент мониторинга ЦП для систем Linux
  4. Поиск топовых запущенных процессов по использованию памяти и ЦП в Linux

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

Source:
https://www.tecmint.com/cputool-limit-linux-process-cpu-usage-load/