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:
- 20 orodij ukazne vrstice za spremljanje delovanja Linuxa - 1. del
- 13 orodij za spremljanje zmogljivosti Linuxa - 2. del
- Perf - orodje za spremljanje in analizo učinkovitosti za Linux
- 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.