Razumijevanje prosječnih opterećenja Linuxa i praćenje performansi Linuxa
U ovom ćemo članku objasniti jedan od kritičnih zadataka administracije Linux sustava – praćenje performansi u odnosu na opterećenje sustava/CPU-a i prosječno opterećenje.
Prije nego što krenemo dalje, shvatimo ove dvije važne fraze u svim sustavima sličnim Unixu:
- Opterećenje sustava/opterećenje CPU-a – je mjerenje prekomjerne ili premale iskorištenosti CPU-a u Linux sustavu; broj procesa koje CPU izvršava ili su u stanju čekanja.
- Prosječno opterećenje – prosječno je opterećenje sustava izračunato u određenom vremenskom razdoblju od 1, 5 i 15 minuta.
U Linuxu se tehnički vjeruje da je prosjek učitavanja tekući prosjek procesa u (jezgri) redu čekanja za izvršavanje označenih kao pokrenuti ili neprekinuti.
Imajte na umu sljedeće:
- Svi, ako ne i većina sustava koje pokreće Linux ili drugi sustavi slični Unixu vjerojatno će negdje pokazati prosječne vrijednosti opterećenja za korisnika.
- Potpuno neaktivan Linux sustav može imati prosječno opterećenje od nule, isključujući proces mirovanja.
- Gotovo svi sustavi slični Unixu broje samo procese u stanju pokretanja ili čekanja. Ali to nije slučaj s Linuxom, on uključuje procese u neprekinutim stanjima mirovanja; oni koji čekaju druge sistemske resurse kao što je disk I/O itd.
Kako pratiti prosječno opterećenje sustava Linux
Postoje brojni načini praćenja prosjeka opterećenja sustava uključujući vrijeme rada koje pokazuje koliko dugo sustav radi, broj korisnika zajedno s 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 gornji rezultat 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 prosjeci opterećenja impliciraju da je sustav preopterećen; mnogi procesi čekaju CPU vrijeme.
To ćemo otkriti u sljedećem odjeljku u odnosu na broj CPU jezgri. Osim toga, možemo koristiti i druge dobro poznate alate kao što su top i glances koji prikazuju stanje pokrenutog Linux sustava u stvarnom vremenu, plus mnoge druge alate:
Vrhovna komanda
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
...
Prosjeci učitavanja prikazani ovim alatima očitavaju se u /proc/loadavg datoteci, koju možete pogledati pomoću naredbe cat kao što je prikazano u nastavku:
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Za praćenje prosjeka opterećenja u formatu grafikona, pogledajte: ttyload – Prikazuje dijagram bojama označen prosjek opterećenja Linuxa u terminalu
Na stolnim računalima postoje alati za grafičko korisničko sučelje koje možemo koristiti za pregled prosječnih opterećenja sustava.
Razumijevanje prosječnog opterećenja sustava u odnosu na broj CPU-a
Ne možemo nikako objasniti opterećenje sustava ili performanse sustava bez osvjetljavanja utjecaja broja CPU jezgri na performanse.
Multi-procesor vs Multi-core
- Višeprocesor – gdje su dva ili više fizičkih procesora integrirana u jedan računalni sustav.
- Višejezgreni procesor – jedan je fizički CPU koji ima najmanje dvije ili više odvojenih jezgri (ili onoga što također možemo nazvati procesorskim jedinicama) koje rade paralelno. Što znači da dvojezgreni ima 2 dvije procesorske jedinice, četverojezgreni ima 4 procesorske jedinice i tako dalje.
Nadalje, postoji i procesorska tehnologija koju je prvi predstavio Intel za poboljšanje paralelnog računalstva, a naziva se hiper threading.
Pod hiper threadingom, jedna fizička CPU jezgra se pojavljuje kao dvije logičke CPU jezgre za operativni sustav (ali u stvarnosti, postoji jedna fizička hardverska komponenta).
Imajte na umu da jedna jezgra CPU-a može izvršiti samo jedan zadatak u isto vrijeme, stoga su oživljene tehnologije kao što su više CPU-a/procesora, višejezgreni CPU-i i hiper-nitnost.
S više od jednog CPU-a, nekoliko programa se može izvoditi istovremeno. Današnji Intelovi procesori koriste kombinaciju višestrukih jezgri i tehnologije hiper-nitnosti.
Da bismo pronašli broj procesorskih jedinica dostupnih u sustavu, možemo koristiti nproc ili lscpu naredbe kako slijedi:
nproc
4
OR
lscpu
Drugi način za pronalaženje broja procesorskih jedinica pomoću naredbe grep kao što je prikazano.
grep 'model name' /proc/cpuinfo | wc -l
4
Da bismo bolje razumjeli opterećenje sustava, uzet ćemo nekoliko pretpostavki. Recimo da u nastavku imamo prosječne vrijednosti opterećenja:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
Na sustavu s jednom jezgrom to bi značilo:
- CPU je u prosjeku bio potpuno (100%) iskorišten; 1 proces se izvodio na CPU-u (1.00) tijekom zadnje 1 minute.
- CPU je u prosjeku bio u mirovanju 60%; niti jedan proces nije čekao CPU vrijeme (0,40) tijekom zadnjih 5 minuta.
- CPU je u prosjeku bio preopterećen za 235%; 2,35 procesa čekalo je CPU vrijeme (3,35) tijekom zadnjih 15 minuta.
Na dvojezgrenom sustavu to bi značilo:
- Jedan CPU je u prosjeku bio 100% u mirovanju, jedan CPU je bio korišten; niti jedan proces nije čekao CPU vrijeme (1.00) tijekom zadnje 1 minute.
- CPU-ovi su u prosjeku bili u mirovanju za 160%; nijedan proces nije čekao CPU vrijeme. (0,40) u zadnjih 5 minuta.
- CPU su u prosjeku bili preopterećeni za 135%; 1,35 procesa čekalo je CPU vrijeme. (3,35) u zadnjih 15 minuta.
Također bi vam se moglo svidjeti:
- 20 alata naredbenog retka za praćenje performansi Linuxa – 1. dio
- 13 alata za praćenje performansi Linuxa – 2. dio
- Perf - alat za praćenje i analizu performansi za Linux
- Nmon: analizirajte i nadzirite performanse Linux sustava
U zaključku, ako ste administrator sustava, tada se morate brinuti zbog visokih prosjeka opterećenja. Kada su visoki, iznad broja CPU jezgri, to označava veliku potražnju za CPU-ima, a mali prosjek opterećenja ispod broja CPU jezgri govori nam da su CPU-i nedovoljno iskorišteni.