CPUTool — Ограничивайте и контролируйте загрузку ЦП любым процессом в Linux
Одной из критических областей мониторинга производительности Linux должно быть использование ЦП и загрузка системы. Существует несколько инструментов мониторинга производительности Linux, позволяющих следить за тем, как обстоят дела в системе.
Некоторые из этих инструментов просто выводят состояние/статистику системы, в то время как некоторые другие предоставляют средства управления производительностью системы. Один из таких инструментов называется CPUTool.
CPUTool — это простой, но мощный инструмент командной строки, позволяющий ограничивать и контролировать использование ЦП любым процессом до заданного предела, а также позволяет прерывать выполнение процесса, если загрузка системы превышает определенный порог.
Как работает CPUTool?
Чтобы ограничить использование ЦП, cputool отправляет процессам сигналы SIGSTOP и SIGCONT, что определяется загрузкой системы. Он использует псевдофайловую систему /proc для чтения PID и показателей использования ЦП.
Его можно использовать для ограничения использования ЦП или загрузки системы, на которую влияет один процесс или группа процессов, до заданного предела и/или приостановки процессов, если загрузка системы превышает пороговое значение.
Рекомендуется к прочтению: Понимание средних значений нагрузки Linux и мониторинг производительности Linux
Установите CPUTool, чтобы ограничить использование ЦП и среднюю нагрузку
CPUTool доступен для установки только в Debian/Ubuntu и его производных из системных репозиториев по умолчанию с использованием инструмента управления пакетами.
sudo apt install cputool
Ограничение использования процессора процессом с помощью CUPTool
Теперь давайте посмотрим, как на самом деле работает cputool. Чтобы продемонстрировать все это, мы запустим команду dd, которая должна привести к высокому проценту загрузки ЦП в фоновом режиме и отобразить его PID.
dd if=/dev/zero of=/dev/null &
Для мониторинга использования ЦП мы можем использовать инструменты Top или Glies, которые позволяют нам просматривать в режиме реального времени регулярно обновляемое состояние запущенных системных процессов Linux:
top
Из приведенного выше вывода мы видим, что команда dd использует самый высокий процент процессорного времени 99,7%)
. Теперь мы можем ограничить это с помощью cputool, как показано ниже.
Флаг --cpu-limit
или -c
используется для установки процента использования для процесса или группы процессов, а -p
— для указания ПИД. Следующая команда ограничит использование команды dd (PID 8275) 50% одного ядра ЦП:
cputool --cpu-limit 50 -p 8275
После запуска cputool мы можем еще раз проверить использование нового ЦП для процесса (PID 8275). Теперь загрузка ЦП процессом dd должна находиться в диапазоне (49,0%–52,0%).
top
Чтобы еще больше ограничить загрузку ЦП dd до 20%, мы можем запустить cputool во второй раз:
cputool --cpu-limit 20 -p 8275
Затем сразу же проверьте, используя такие инструменты, как top или glooks, подобные этому (загрузка ЦП для dd теперь должна находиться в диапазоне 19,0%-22,0% или немного выше):
top
Обратите внимание, что оболочка не ожидает ввода данных пользователем во время работы 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
Ознакомьтесь со следующими полезными руководствами для поиска информации о процессоре и мониторинга производительности процессора:
- 9 полезных команд для получения информации о процессоре в Linux
- Cpustat — отслеживает загрузку процессора путем запуска процессов в Linux.
- CoreFreq — мощный инструмент мониторинга процессора для систем Linux
- Найдите наиболее запущенные процессы по максимальному использованию памяти и процессора в Linux
В заключение, CPUTool действительно полезен для управления производительностью Linux. Поделитесь своими мыслями об этой статье через форму обратной связи ниже.