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

Как ограничить использование ЦП с помощью 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 для его оценки. Давайте проясним это на примере.

  1. Вот пример использования вашего ЦП с приложением на одноядерном ЦП:
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.

  1. Вот пример использования вашего ЦП с приложением на многоядерном ЦП:

Чтобы проверить ядро процессора, используйте команду:

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

Статьи по данной тематике: