Razumjeti prosjek opterećenja Linuxa i pratiti performanse Linuxa


U ovom članku ćemo objasniti jedan od kritičnih zadataka administracije Linux sistema – praćenje performansi u odnosu na opterećenje sistema/CPU-a i prosjek opterećenja.

Prije nego krenemo dalje, shvatimo ove dvije važne fraze u svim sistemima sličnim Unixu:

  • Učitavanje sistema/opterećenje CPU-a – je mjerenje prekomjerne ili nedovoljne iskorištenosti CPU-a u Linux sistemu; broj procesa koje izvršava CPU ili su u stanju čekanja.
  • Prosjek opterećenja – je prosječno opterećenje sistema izračunato u datom vremenskom periodu od 1, 5 i 15 minuta.

U Linuxu se tehnički vjeruje da je prosjek opterećenja tekući prosjek procesa u njegovom (kernel) redu izvršavanja označenih kao pokrenuti ili neprekinuti.

Imajte na umu da:

  • Svi ako ne i većina sistema koje pokreće Linux ili drugi sistemi slični Unixu će možda pokazati prosječne vrijednosti opterećenja negdje za korisnika.
  • Potpuno neaktivan Linux sistem može imati prosjek opterećenja nula, isključujući proces mirovanja.
  • Gotovo svi sistemi slični Unixu broje samo procese u stanju rada ili čekanju. Ali to nije slučaj sa Linuxom, on uključuje procese u neprekidnim stanjima mirovanja; oni koji čekaju na druge sistemske resurse kao što su disk I/O itd.

Kako pratiti prosječno opterećenje Linux sistema

Postoje brojni načini praćenja prosjeka opterećenja sistema, uključujući vrijeme rada koje pokazuje koliko dugo je sistem radio, broj korisnika zajedno sa prosjekom opterećenja:

uptime

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

Brojevi se čitaju s lijeva na desno, a izlaz iznad znači da:

  • Prosjek opterećenja u posljednjoj 1 minuti je 1,98
  • prosjek opterećenja u posljednjih 5 minuta je 2,15
  • prosjek opterećenja u posljednjih 15 minuta je 2,21

Visoki proseci opterećenja impliciraju da je sistem preopterećen; mnogi procesi čekaju CPU vrijeme.

Ovo ćemo otkriti u sljedećem odjeljku u vezi sa brojem CPU jezgara. Osim toga, možemo koristiti i druge dobro poznate alate kao što su vrh i pogledi koji prikazuju stanje u realnom vremenu pokrenutog Linux sistema, plus mnoge druge alate:

Top Command

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   
....

Alat za poglede

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 
...

Prosjek opterećenja prikazan ovim alatima je pročitana datoteka /proc/loadavg, koju možete pogledati koristeći cat komandu kao u nastavku:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Za praćenje prosjeka opterećenja u formatu grafa, pogledajte: ttyload – Prikazuje bojom kodiran graf prosjeka opterećenja Linuxa u terminalu

Na desktop mašinama postoje alati za grafičko korisničko sučelje koje možemo koristiti za pregled prosjeka opterećenja sistema.

Razumijevanje prosječnog opterećenja sistema u odnosu na broj CPU-a

Ne možemo nikako objasniti opterećenje sistema ili performanse sistema bez rasvjetljavanja utjecaja broja CPU jezgara na performanse.

Višeprocesor protiv višejezgrenog

  • Višeprocesor – je mjesto gdje su dva ili više fizičkih CPU-a integrirana u jedan računarski sistem.
  • Višejezgreni procesor – je jedan fizički CPU koji ima najmanje dvije ili više odvojenih jezgara (ili ono što možemo nazvati i procesorskim jedinicama) koje rade paralelno. Što znači da dual-core ima 2 dvije procesorske jedinice, četverojezgreni ima 4 procesorske jedinice i tako dalje.

Nadalje, postoji i tehnologija procesora koju je prvi uveo Intel kako bi poboljšao paralelno računanje, nazvano hiper threading.

Pod hiper threadingom, jedno fizičko CPU jezgro se pojavljuje kao dva logička CPU jezgra za operativni sistem (ali u stvarnosti postoji jedna fizička hardverska komponenta).

Imajte na umu da jedno jezgro CPU-a može izvršavati samo jedan zadatak u isto vrijeme, tako da su oživljene tehnologije poput više CPU-a/procesora, višejezgrenih CPU-a i hyper-threading-a.

Sa više od jednog CPU-a, nekoliko programa se može izvršavati istovremeno. Današnji Intelovi CPU-i koriste kombinaciju više jezgara i hiper-nitne tehnologije.

Da bismo pronašli broj procesorskih jedinica dostupnih na sistemu, možemo koristiti nproc ili lscpu komande kako slijedi:

nproc
4

OR
lscpu

Drugi način da pronađete broj procesorskih jedinica pomoću komande grep kao što je prikazano.

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

4

Sada, da bismo dalje razumjeli opterećenje sistema, uzeti ćemo nekoliko pretpostavki. Recimo da imamo prosjek opterećenja ispod:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Na sistemu sa jednim jezgrom to bi značilo:
  • CPU je bio u potpunosti (100%) iskorišten u prosjeku; 1 proces je pokrenut na CPU-u (1.00) u posljednjoj 1 minuti.
  • CPU je bio u stanju mirovanja za 60% u prosjeku; nijedan proces nije čekao CPU vrijeme (0,40) u posljednjih 5 minuta.
  • CPU je bio preopterećen za 235% u prosjeku; 2,35 procesa čekalo je CPU vrijeme (3,35) u posljednjih 15 minuta.
Na dual-core sistemu to bi značilo:
  • Jedan CPU je u proseku bio 100% u stanju mirovanja, jedan CPU se koristio; nijedan proces nije čekao na CPU vrijeme (1.00) u posljednjoj 1 minuti.
  • CPU-ovi su bili u stanju mirovanja za 160% u prosjeku; nijedan proces nije čekao CPU vrijeme. (0.40) u posljednjih 5 minuta.
  • CPU-ovi su bili preopterećeni za 135% u prosjeku; 1.35 procesa je čekalo CPU vrijeme. (3.35) u posljednjih 15 minuta.

Možda će vam se svidjeti i:

  1. 20 alata komandne linije za praćenje performansi Linuxa – 1. dio
  2. 13 Linux alati za praćenje performansi – 2. dio
  3. Perf- Alat za praćenje i analizu performansi za Linux
  4. Nmon: Analizirajte i pratite performanse Linux sistema

U zaključku, ako ste administrator sistema, onda su visoki prosječni opterećenja stvarni za brigu. Kada su visoki, iznad broja CPU jezgara, to označava veliku potražnju za CPU-ima, a nisko opterećenje prosječno ispod broja CPU jezgara nam govori da su CPU-i nedovoljno iskorišteni.