Как ограничить использование ЦП с помощью CPULimit в Ubuntu Linux
В этом руководстве описывается, как ограничить использование ЦП в Ubuntu. Для этой цели я буду использовать утилиту cpulimit. Cpulimit — это инструмент, который ограничивает использование процессора процессом (выраженное в процентах, а не во времени процессора). Полезно контролировать пакетные задания, если вы не хотите, чтобы они потребляли слишком много циклов ЦП. Цель cpulimit — предотвратить запуск процесса дольше указанного времени. Это не меняет значение nice или другие настройки приоритета планирования, а изменяет реальную загрузку ЦП. Кроме того, он может динамически и быстро адаптироваться к общей нагрузке системы.
Используемый объем ЦП контролируется путем отправки процессам сигналов SIGSTOP и SIGCONT POSIX. Дочерние процессы и потоки указанного процесса будут использовать один и тот же процент ЦП.
1 предварительное примечание
Это руководство было протестировано в Ubuntu 22.04, но оно также работает и в более старых версиях Ubuntu 18.04 и 20.04. Система должна иметь статический IP-адрес. В этом руководстве я использую 192.168.1.100 в качестве IP-адреса и server1.example.com в качестве имени хоста.
2 Установка CPULimit
Сначала нам нужно установить cpulimit следующим образом:
apt update
apt install cpulimit
3 Ограничение использования ЦП
Теперь проверим утилиту ограничения использования процессора. Для этого мы сначала проверим использование ЦП без cpulimit, а затем реализуем cpulimit для его оценки. Давайте проясним это на примере.
- Вот пример использования вашего ЦП с приложением на одноядерном ЦП:
dd if=/dev/zero of=/dev/null &
Затем мы проверим загрузку ЦП командой:
top
top - 11:24:18 up 49 min, 1 user, load average: 0.94, 1.02, 1.79
Tasks: 249 total, 2 running, 247 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.4 us, 11.6 sy, 0.0 ni, 74.9 id, 0.0 wa, 0.1 hi, 0.0 si, 0.0 st
KiB Mem: 1010540 total, 271652 used, 738888 free, 21760 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 158204 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1850 root 20 0 7224 616 520 R 100.0 0.1 1:20.33 dd
1851 root 20 0 24952 1756 1180 R 0.3 0.2 0:00.03 top
1 root 20 0 33480 2776 1456 S 0.0 0.3 0:05.31 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
Как мы видим, загрузка процессора достигла 100%. Теперь мы будем использовать cpulimit для ограничения использования процессора. Мы можем вывести этот процесс на передний план с помощью команды fg и отменить его с помощью CTRL+C.
fg
Теперь мы можем проверить cpulimit, чтобы увидеть, делает ли он то, что должен. Давайте проверим это следующим образом:
cpulimit -l 30 dd if=/dev/zero of=/dev/null &
Теперь мы проверим загрузку процессора с помощью команды top:
top
Теперь вы можете видеть, что загрузка ЦП снизилась со 100% до 33,8%, почти на 30%. Вот мы и успешно проверили утилиту cpulimit, которая позволяет ограничить использование потребления процессора в одноядерном дистрибутиве Ubuntu.
- Вот пример использования вашего ЦП с приложением на многоядерном ЦП:
Чтобы проверить ядро процессора, используйте команду:
nproc
В моем случае количество ядер ЦП было 4.
Теперь мы продолжим проверять загрузку ЦП без ограничения процессора во всех 4 ядрах приложения следующим образом:
for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done
Он выполнит команду, используя все ядра, и выдаст результат:
Теперь проверьте загрузку ЦП с помощью команды top:
top
Команда dd потребляет почти 100% ресурсов ЦП всех ядер. Далее проверим команду утилитой cpulimit. Для этого удалите предыдущие трассировки для команды dd следующим образом:
killall dd
Теперь используйте cpulimit с той же командой:
for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done
Теперь проверьте загрузку ЦП с помощью утилиты cpulimit.
top
Как видно выше, загрузка ЦП ограничена от 100 % до 20 % почти для многоядерных процессоров.
Поздравляем! Мы успешно протестировали cpulimit для ограничения использования ЦП в Ubuntu.
4 ссылки
- Убунту: http://www.ubuntu.com/
- cpulimit : https://github .com/opsengine/cpulimit