GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak omezit využití CPU pomocí CPULimit na Ubuntu Linux

Tento návod popisuje, jak omezit využití procesoru v Ubuntu 18.04. K tomuto účelu použiji nástroj cpulimit. Cpulimit je nástroj, který omezuje využití procesoru procesem (vyjádřeno v procentech, nikoli v čase procesoru). Je užitečné řídit dávkové úlohy, když nechcete, aby spotřebovaly příliš mnoho cyklů CPU. Cílem cpulimit je zabránit tomu, aby proces běžel déle, než je zadaný časový poměr. Nemění to hodnotu nice ani jiné nastavení priority plánování, ale skutečné využití procesoru. Také se dokáže dynamicky a rychle přizpůsobit celkové zátěži systému.

Řízení množství použitého CPU se provádí odesíláním signálů SIGSTOP a SIGCONT POSIX do procesů. Všechny podřízené procesy a vlákna zadaného procesu budou sdílet stejné procento CPU.

1 předběžná poznámka

Tento výukový program je založen na serveru Ubuntu 18.04 LTS (Bionic Beaver), takže před pokračováním v tomto výukovém programu byste měli nastavit základní instalaci serveru Ubuntu 18.04. Systém by měl mít statickou IP adresu. V tomto návodu používám jako svou IP adresu 192.168.1.100 a jako název hostitele server1.example.com.

2 Instalace CPULimit

Nejprve musíme nainstalovat cpulimit následovně:

apt-get update
apt-get install cpulimit

3 Omezení využití procesoru 

Nyní zkontrolujeme utilitu pro omezení využití procesoru. Za tímto účelem nejprve zkontrolujeme využití CPU bez cpulimit a poté implementujeme cpulimit, abychom to vyhodnotili. Ujasněme si to na příkladu.

  1. Zde je příklad využití CPU s aplikací v jednojádrovém CPU:
dd if=/dev/zero of=/dev/null &

Poté zkontrolujeme využití procesoru příkazem:

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        

Jak vidíme, že využití procesoru se zvýšilo na 100 %, nyní k omezení využití procesoru použijeme cpulimit. Tento proces můžeme dostat do popředí pomocí fg a zrušte jej pomocí CTRL+C

fg

Nyní můžeme otestovat cpulimit, abychom zjistili, zda skutečně dělá to, co má. Nechte to otestovat následovně:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[e-mail chráněný]:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[e-mail chráněn]:~# Zjištěn proces 1853

[1]+  Hotovo                     cpulimit -l 30 dd if=/dev/zero of=/dev/null
[e-mail chráněn]:~#

Nyní zkontrolujeme využití CPU příkazem top:

top
nahoře - 11:30:54 nahoru 55 min,  1 uživatel,  průměrné zatížení:0,20, 0,58, 1,34
Úkoly:celkem 250,   2 běžící, 247 spící,   1 zastaveno,   0 zombie
%Cpu(y) ):  4,5 us,  4,1 sy,  0,0 ni, 91,4 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Paměť:   1010540 celkem, S  271943 p B zdarma,   271943 B wa  použito 6  Celkem 1048572,        0 použito,  1048572 zdarma. 158212 CACHED MEM

Uživatel pid pr ni virty res s %cpu %mem time+ příkaz
1853 root 20 0 7224 612 520 t 33,8 <33,8 <33,8 <33,8 <33,8 <33,8 <33,8 <33,8 0,1 0:35,53 DD
1 Root 20 0 33480 2776 1456 S 0,0 0,3 0:05,37 INIT
2 Root 20 0 0 0 0 S 0,0 0,0 0:00,01 KTHREADD
3 Root 20 0 0 0 0 0      0 S   0,0  0,0   0:00,02 ksoftirqd/0               
    4 odmocnina      20   0 .0 0.   0        0    0 k. 0    0 k.

Nyní můžete vidět, že využití procesoru kleslo ze 100 % na 33,8 % téměř o 30 %. Úspěšně jsme tedy zkontrolovali obslužný program cpulimit, který je schopen omezit využití spotřeby CPU v distribuci Ubuntu s jedním jádrem.

  1. Zde je příklad využití CPU s aplikací s vícejádrovým CPU:

Pro kontrolu jádra CPU použijte příkaz:

nproc   

V mém případě je počet jader CPU 4.
Nyní přistoupíme ke kontrole využití CPU bez cpulimit ve všech 4 jádrech aplikace takto:

for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done

Spustí příkaz s využitím všech jader a výstup vydá jako:

[e-mail chráněný]:~# pro j v `seq 1 4`; do dd if=/dev/zero of=/dev/null &hotovo
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[e-mail chráněný]:~#


Nyní zkontrolujte využití procesoru příkazem top:

top
nahoře - 11:47:45 nahoru 4 minuty,  1 uživatel,  průměrná zátěž:3,63, 1,53, 0,57
Úkoly:290 celkem,   5 běží, 285 spící,   0 zastaveno,   0 zombie
%Cpu0  :48,3 us, 51,3 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hi,  0,0 si,  0,0 st
%Cpu1  :47,8 us, 52,2 sy,  0,0 ni, 0,0, 0,0 .0 . 0,0 st
%Cpu2  :53,3 us, 46,4 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hi,  0,0 si,  0,0 st
%Cpu3  :48,0 s, 0 us, 0. 0 ,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   1010540 celkem,   209712 využito,   800828 zdarma, 0   20276 využito 4, 8 volných 2 1 swap celkem
KiB 1 swap celkem 93632 uložená paměť

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     ČAS + PŘÍKAZ                             
1263 kořenová        
1272 20      2 
1272 1 0  /strong> 0,1   2:21,40 dd                        
 1264 kořen      20   0    7224    616    520 R 100 R 10 0,1   2:21,41 dd                        
 1265 kořen      20   0    7224    612    520 R  9 0,1   2:21,03 dd                        
 1266 kořen      20   0    7224    616    520 R  98,0  0,1 2:20,82 DD
1281 Root 20 0 104416 3992 2920 S 1,0 0,4 0:00,03 SSHD
1283 Root 20 0 104416 3988 2920 S 1.0 0,4 0:00.03 SSHD
1279 Root 20 0 104556 4008   2924 S   0,7  0,4   0:00,08 sshd


Příkaz dd spotřebovává téměř 100 % CPU všech jader. Dále zkontrolujeme příkaz pomocí utility cpulimit. Za tímto účelem ukončete předchozí trasování příkazu dd následovně:

killall dd
[e-mail protected]:~# killall dd
[1]   Ukončeno              dd if=/dev/zero of=/dev/null
[3]-  Ukončeno               dd if=/dev/zero of=/de /null
[2]-  Ukončeno              dd if=/dev/zero of=/dev/null
[4]+  Ukončeno               dd if=/dev/zero of=/dev/null
[e-mail chráněný]:~#


Nyní použijte cpulimit se stejným příkazem takto:

for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done
[e-mail chráněný]:~# pro j v `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null &hotovo
[1] 1429
[2] 1430
[3] 1431
[4 ] 1432
[e-mail chráněn]:~# Zjištěn proces 1434
Zjištěn proces 1433
Zjištěn proces 1437
Zjištěn proces 1439

[1]   Hotovo              pulimit   -l 20 dd if=/dev/zero of=/dev/null
[2]   Hotovo                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[3]-  Hotovo cpulimit -l 20 dd if=/dev/zero of=/dev/null
[4]+  Hotovo                     cpulimit -l 20 dd if=/dev/zero of=/dev/null
[e-mail chráněno ]:~#


Nyní zkontrolujte využití CPU pomocí nástroje cpulimit.

top
nahoře - 11:59:10 nahoru 16 min,  2 uživatelé,  průměrná zátěž:0,47, 0,71, 0,81
Úkoly:celkem 256,   2 běží, 251 spící,   3 zastaveny,   0 zombie
%Cpu0  :  2,0 us,  2,0 sy,  0,0 ni, 96,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu1  :26,2 us, 22,8 sy,  0,0 ni, 30,0 ni, 30,0 .0. 0,0 st
%Cpu2  :14,0 us, 12,3 sy,  0,0 ni, 73,8 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu3  :111,3 s, 0,0 r. ,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   1010540 celkem,   204064 využito,   806476 zdarma, 0   20408 využito, 7 volných 2, 4 1 Swap celkem
KiB 1 swap celkem 98340 uložená paměť

  PID UŽIVATELE      PR  NI    VIRT    RES    SHR S  %CPU %MEM     ČAS + PŘÍKAZ                             
2 2 2.    2 2.   2   2   2   2 0,1   0:12,00 dd                        
 1439 kořen      20   0    7224    616    520 R  2 0,1   0:12,13 dd                        
 1434 kořen      20   0    7224    612    520 T  25,3  0,1   0:11,97 dd                        
 1437 kořen      20   0    7224    612    516 T  2 0,1 0:11,93 DD
7 Root 20 0 0 0 0 S 0,3 0,0 0:00,22 RCU_SCHED
8 Root 20 0 0 0 0 S 0,3 0,0 0:00,21 RCUOS /0


Jak vidíte výše, využití procesoru je omezeno od 100 % do 20 % téměř u vícejádrových procesorů.

Blahopřejeme! Úspěšně jsme testovali cpulimit pro omezení využití CPU v Ubuntu 18.04 :)

  •     Ubuntu:http://www.ubuntu.com/
  •     cpulimit :https://github.com/opsengine/cpulimit

Ubuntu
  1. Jak nainstalovat PostgreSQL 9.1.3 s pgAdmin3 na Ubuntu 11.10 / Linux Mint 12

  2. Jak omezit využití CPU procesu v Linuxu

  3. Jak nainstalovat Suphp s Apache na Ubuntu / Linux

  1. Jak zkontrolovat využití CPU v Linuxu pomocí příkazového řádku

  2. Jak nastavit limit využití paměti Dockeru a CPU

  3. Jak chránit váš systém Ubuntu Linux pomocí SurfShark VPN

  1. Jak zkontrolovat teplotu CPU v Linuxu

  2. Jak aktualizovat jádro Linuxu v Ubuntu

  3. Jak hrát jako DJ na Ubuntu Linux s Mixxx