Razumevanje povprečja obremenitve Linuxa in spremljanje učinkovitosti Linuxa


V tem članku bomo razložili eno najpomembnejših nalog skrbništva sistema Linux - spremljanje učinkovitosti glede na obremenitve sistema/CPE in povprečja obremenitve.

Preden nadaljujemo, razumimo ti dve pomembni stavki v vseh sistemih, podobnih Unixu:

  • Obremenitev sistema/obremenitev procesorja - je merjenje prenapetosti ali premajhne porabe procesorja v sistemu Linux; število procesov, ki jih izvaja CPU ali v čakalnem stanju.
  • Povprečje obremenitve - je povprečna obremenitev sistema, izračunana v danem časovnem obdobju 1, 5 in 15 minut.

V Linuxu tehnično velja, da je povprečje obremenitve tekoče povprečje procesov v njegovi čakalni vrsti (jedru), ki je označena kot zagnana ali neprekinjena.

Upoštevajte, da:

  • Vsi, če ne večina sistemov, ki jih poganja Linux ali drugi sistemi, podobni Unixu, bodo morda prikazali povprečne vrednosti nalaganja nekje za uporabnika.
  • Popolnoma nedejavni sistem Linux ima lahko povprečje obremenitve nič, razen postopka mirovanja.
  • Skoraj vsi Unixu podobni sistemi štejejo samo procese v delujočem ali čakalnem stanju. Vendar to ne velja za Linux, vključuje procese v stanju neprekinjenega spanja; tisti, ki čakajo na druge sistemske vire, kot so vhodno-izhodni diski itd.

Kako spremljati povprečje obremenitve sistema Linux

Obstajajo številni načini spremljanja povprečne obremenitve sistema, vključno s časom delovanja, ki prikazuje, kako dolgo sistem deluje, število uporabnikov skupaj s povprečji obremenitve:

$ uptime

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

Številke se berejo od leve proti desni, zgornji izhod pa pomeni, da:

  • povprečje obremenitve v zadnji minuti je 1,98
  • povprečje obremenitve v zadnjih 5 minutah je 2,15
  • povprečje obremenitve v zadnjih 15 minutah je 2,21

Povprečja velike obremenitve pomenijo, da je sistem preobremenjen; mnogi procesi čakajo na čas procesorja.

To bomo razkrili v naslednjem razdelku glede števila jeder procesorja. Poleg tega lahko uporabimo tudi druga dobro znana orodja, kot so pogledi, ki prikazujejo stanje delujočega sistema Linux v realnem času in številna druga orodja:

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

Povprečna obremenitev, ki jo prikazujejo ta orodja, je datoteka read/proc/loadavg, ki si jo lahko ogledate z ukazom cat, kot je prikazano spodaj:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Če želite spremljati povprečja obremenitve v obliki grafa, si oglejte: ttyload - prikaže barvno kodiran graf povprečja obremenitve Linuxa v terminalu

Na namiznih računalnikih obstajajo orodja za grafični uporabniški vmesnik, s katerimi si lahko ogledamo povprečja obremenitve sistema.

Razumevanje povprečne obremenitve sistema v relacijskem številu procesorjev

Ne moremo razložiti obremenitve sistema ali njegove zmogljivosti, ne da bi osvetlili vpliv števila procesorskih jeder na zmogljivost.

  • Večprocesorski proces-kjer sta dva ali več fizičnih procesorjev integrirana v en sam računalniški sistem.
  • Večjedrni procesor - je en fizični procesor, ki ima vsaj dve ali več ločenih jeder (ali kar lahko imenujemo tudi procesne enote), ki delujejo vzporedno. To pomeni, da ima dvojedrni dve procesorski enoti, štirijedrnik ima 4 procesorske enote itd.

Poleg tega obstaja tudi procesorska tehnologija, ki jo je Intel prvič predstavil za izboljšanje vzporednega računalništva, imenovano hiper nitanje.

Pri hiper navojih se eno fizično jedro CPE -ja v operacijskem sistemu pojavi kot dve logični jedri CPU -ja (v resnici pa obstaja ena fizična komponenta strojne opreme).

Upoštevajte, da lahko eno jedro CPU naenkrat izvede samo eno nalogo, zato so tehnologije, kot so več CPU/procesorjev, večjedrni CPU in hiper-navoji, oživele.

Z več kot enim CPU je mogoče hkrati izvajati več programov. Današnji procesorji Intel uporabljajo kombinacijo več jeder in tehnologije hiper-navojev.

Za iskanje števila procesorskih enot, ki so na voljo v sistemu, lahko uporabimo ukaze nproc ali lscpu, kot sledi:

$ nproc
4

OR
lscpu

Drug način za iskanje števila procesorskih enot z ukazom grep, kot je prikazano.

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

4

Zdaj bomo za boljše razumevanje obremenitve sistema vzeli nekaj predpostavk. Recimo, da imamo spodaj povprečja obremenitve:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35

  • CPU je bil v povprečju izkoriščen v celoti (100%); Na CPU (1.00) se je v zadnji 1 minuti tekel 1 proces.
  • CPU je bil v povprečju v prostem teku za 60%; noben proces ni čakal na čas CPU (0,40) v zadnjih 5 minutah.
  • CPU je bil v povprečju preobremenjen za 235%; 2,35 procesov je v zadnjih 15 minutah čakalo na procesorski čas (3,35).

  • En CPU je bil v povprečju 100% nedejaven, en CPU je bil v uporabi; noben proces ni čakal na čas procesorja (1,00) v zadnji 1 minuti.
  • CPU -ji so v povprečju mirovali za 160%; noben proces ni čakal na čas procesorja. (0,40) v zadnjih 5 minutah.
  • CPE so bili v povprečju preobremenjeni za 135%; Na procesorski čas je čakal 1,35 procesov. (3.35) v zadnjih 15 minutah.

Morda bi vam bilo všeč tudi:

  1. 20 orodij ukazne vrstice za spremljanje delovanja Linuxa - 1. del
  2. 13 orodij za spremljanje zmogljivosti Linuxa - 2. del
  3. Perf - orodje za spremljanje in analizo učinkovitosti za Linux
  4. Nmon: Analizirajte in spremljajte delovanje sistema Linux

Če zaključimo, če ste skrbnik sistema, bi vas bilo treba skrbeti za povprečja visokih obremenitev. Ko so visoke, nad številom CPU jeder, pomeni veliko povpraševanje po CPU, povprečje nizke obremenitve pod številom CPU jeder pa nam pove, da so CPU premalo izkoriščeni.