Înțelegeți mediile de încărcare Linux și monitorizați performanța Linux


În acest articol, vom explica una dintre sarcinile critice de administrare a sistemului Linux - monitorizarea performanței în ceea ce privește încărcarea sistemului/CPU și mediile de încărcare.

Înainte de a merge mai departe, să înțelegem aceste două fraze importante în toate sistemele de tip Unix:

  • System load/CPU Load – este o măsurare a suprautilizarii sau subutilizarii CPU într-un sistem Linux; numărul de procese care sunt executate de CPU sau în stare de așteptare.
  • Media de încărcare – este sarcina medie a sistemului calculată pe o anumită perioadă de timp de 1, 5 și 15 minute.

În Linux, se crede tehnic că media de încărcare este o medie de rulare a proceselor din coada de execuție (kernel) etichetată ca rulând sau neîntreruptibil.

Rețineți că:

  • Toate, dacă nu majoritatea sistemelor alimentate cu Linux sau alte sisteme asemănătoare Unix, vor afișa probabil valorile medii de încărcare undeva pentru un utilizator.
  • Un sistem Linux de-a dreptul inactiv poate avea o medie de încărcare de zero, excluzând procesul inactiv.
  • Aproape toate sistemele asemănătoare Unix numără doar procesele în starea de rulare sau de așteptare. Dar nu este cazul cu Linux, el include procese în stări de somn neîntreruptibil; cei care așteaptă alte resurse de sistem, cum ar fi I/O pe disc etc.

Cum se monitorizează încărcarea medie a sistemului Linux

Există numeroase modalități de monitorizare a încărcării medii a sistemului, inclusiv timpul de funcționare care arată cât timp a funcționat sistemul, numărul de utilizatori împreună cu mediile de încărcare:

uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Numerele sunt citite de la stânga la dreapta, iar rezultatul de mai sus înseamnă că:

  • media de încărcare în ultimul 1 minut este de 1,98
  • media de încărcare în ultimele 5 minute este de 2,15
  • media de încărcare în ultimele 15 minute este de 2,21

Mediile de sarcină ridicate implică faptul că un sistem este supraîncărcat; multe procese așteaptă timp CPU.

Vom descoperi acest lucru în secțiunea următoare în legătură cu numărul de nuclee CPU. În plus, putem folosi și alte instrumente binecunoscute, cum ar fi top și priviri, care afișează o stare în timp real a unui sistem Linux care rulează, plus multe alte instrumente:

Comanda de sus

top
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Instrumentul de priviri

glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

Mediile de încărcare afișate de aceste instrumente sunt citite fișierul /proc/loadavg, pe care îl puteți vizualiza folosind comanda cat, după cum urmează:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Pentru a monitoriza mediile de încărcare în format grafic, consultați: ttyload – Afișează un grafic codificat în culori al mediei de încărcare Linux în terminal

Pe computerele desktop, există instrumente de interfață grafică cu utilizatorul pe care le putem folosi pentru a vizualiza mediile de încărcare a sistemului.

Înțelegerea încărcării medii a sistemului în raport cu numărul de procesoare

Nu putem explica încărcarea sistemului sau performanța sistemului fără a face lumină asupra impactului numărului de nuclee CPU asupra performanței.

Multi-procesor Vs Multi-core

  • Multi-procesor – este locul în care două sau mai multe CPU-uri fizice sunt integrate într-un singur sistem computerizat.
  • Procesor cu mai multe nuclee – este un singur CPU fizic care are cel puțin două sau mai multe nuclee separate (sau ceea ce putem numi și unități de procesare) care funcționează în paralel. Înseamnă că un dual-core are 2 două unități de procesare, un quad-core are 4 unități de procesare și așa mai departe.

În plus, există și o tehnologie de procesor care a fost introdusă pentru prima dată de Intel pentru a îmbunătăți calculul paralel, denumită hyper threading.

Sub hyper threading, un singur nucleu fizic de procesor apare ca două nuclee de procesoare logice pentru un sistem de operare (dar, în realitate, există o componentă hardware fizică).

Rețineți că un singur nucleu CPU poate îndeplini doar o sarcină odată, astfel că tehnologii precum procesoare/procesoare multiple, procesoare multi-core și hyper-threading au fost aduse la viață.

Cu mai mult de un CPU, mai multe programe pot fi executate simultan. Procesoarele Intel actuale folosesc o combinație de nuclee multiple și tehnologie hyper-threading.

Pentru a găsi numărul de unități de procesare disponibile pe un sistem, putem folosi comenzile nproc sau lscpu după cum urmează:

nproc
4

OR
lscpu

O altă modalitate de a găsi numărul de unități de procesare folosind comanda grep, așa cum se arată.

grep 'model name' /proc/cpuinfo | wc -l

4

Acum, pentru a înțelege în continuare încărcarea sistemului, vom lua câteva ipoteze. Să presupunem că avem medii de încărcare mai jos:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Pe un singur sistem de bază, aceasta ar însemna:
  • Procesorul a fost utilizat pe deplin (100%) în medie; 1 procese au fost rulate pe CPU (1.00) în ultimul minut.
  • Procesorul era inactiv cu 60% în medie; niciun proces nu a așteptat timp CPU (0,40) în ultimele 5 minute.
  • CPU a fost supraîncărcat cu 235% în medie; 2.35 procese au așteptat timp CPU (3.35) în ultimele 15 minute.
Pe un sistem dual-core, aceasta ar însemna:
  • Unul CPU era 100% inactiv în medie, era folosit un CPU; niciun proces nu a așteptat timpul CPU (1.00) în ultimul minut.
  • Procesoarele au fost inactive cu 160% în medie; niciun proces nu aștepta timpul CPU. (0,40) în ultimele 5 minute.
  • Procesoarele au fost supraîncărcate cu 135% în medie; 1.35 procese așteptau timp CPU. (3.35) în ultimele 15 minute.

S-ar putea sa-ti placa si:

  1. 20 de instrumente de linie de comandă pentru a monitoriza performanța Linux - Partea 1
  2. 13 Instrumente de monitorizare a performanței Linux – Partea 2
  3. Perf- Un instrument de monitorizare și analiză a performanței pentru Linux
  4. Nmon: Analizați și monitorizați performanța sistemului Linux

În concluzie, dacă sunteți administrator de sistem, mediile de încărcare ridicate sunt reale de care vă faceți griji. Când sunt mari, peste numărul de nuclee CPU, înseamnă o cerere mare pentru procesoare, iar mediile de încărcare scăzută sub numărul de nuclee CPU ne indică faptul că procesoarele sunt subutilizate.