Begrijp de Linux-belastingsgemiddelden en bewaak de prestaties van Linux
In dit artikel leggen we een van de cruciale Linux-systeembeheertaken uit: prestatiemonitoring met betrekking tot systeem-/CPU-belasting en belastinggemiddelden.
Voordat we verder gaan, laten we eerst deze twee belangrijke zinsneden begrijpen in alle Unix-achtige systemen:
- Systeembelasting/CPU-belasting – is een meting van CPU-over- of ondergebruik in een Linux-systeem; het aantal processen dat door de CPU wordt uitgevoerd of in de wachtstatus staat.
- Gemiddelde belasting – is de gemiddelde systeembelasting berekend over een bepaalde periode van 1, 5 en 15 minuten.
In Linux wordt technisch gezien aangenomen dat het belastingsgemiddelde een lopend gemiddelde is van processen in de (kernel) uitvoeringswachtrij die zijn getagd als actief of niet-onderbreekbaar.
Merk op dat:
- Al zullen de, zo niet de meeste, door Linux of andere Unix-achtige systemen aangedreven systemen mogelijk ergens de gemiddelde belastingswaarden voor een gebruiker weergeven.
- Een ronduit inactief Linux-systeem kan een gemiddelde belasting van nul hebben, het inactieve proces niet meegerekend.
- Bijna alle Unix-achtige systemen tellen alleen processen in de actieve of wachtende status. Maar dit is niet het geval bij Linux; het omvat processen in ononderbroken slaaptoestanden; degenen die wachten op andere systeembronnen zoals schijf-I/O enz.
Hoe u de gemiddelde systeembelasting van Linux kunt monitoren
Er zijn talloze manieren om het gemiddelde van de systeembelasting te controleren, inclusief de uptime die laat zien hoe lang het systeem actief is, het aantal gebruikers en de gemiddelde belasting:
uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
De cijfers worden van links naar rechts gelezen en de bovenstaande uitvoer betekent dat:
- Het laadgemiddelde over de afgelopen 1 minuut is 1,98
- Het laadgemiddelde over de afgelopen 5 minuten is 2,15
- Het laadgemiddelde over de afgelopen 15 minuten is 2,21
Hoge belastinggemiddelden impliceren dat een systeem overbelast is; veel processen wachten op CPU-tijd.
We zullen dit in de volgende sectie ontdekken met betrekking tot het aantal CPU-kernen. Daarnaast kunnen we net zo goed andere bekende tools gebruiken, zoals top en blikken die de realtime status van een draaiend Linux-systeem weergeven, plus vele andere tools:
Topcommando
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
....
Gereedschap voor blikken
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
...
De laadgemiddelden die door deze tools worden weergegeven, zijn het leesbestand /proc/loadavg, dat u kunt bekijken met de cat-opdracht, zoals hieronder:
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Om de laadgemiddelden in grafiekformaat te monitoren, ga naar: ttyload – Toont een kleurgecodeerde grafiek van Linux Load Average in Terminal
Op desktopmachines zijn er grafische gebruikersinterfacetools die we kunnen gebruiken om de gemiddelden van de systeembelasting te bekijken.
Inzicht in de gemiddelde systeembelasting in relatie tot het aantal CPU's
We kunnen onmogelijk de systeembelasting of systeemprestaties verklaren zonder licht te werpen op de impact van het aantal CPU-kernen op de prestaties.
Multiprocessor versus multi-core
- Multiprocessor – hier zijn twee of meer fysieke CPU's geïntegreerd in één computersysteem.
- Multi-core processor – is een enkele fysieke CPU die ten minste twee of meer afzonderlijke kernen heeft (of wat we ook wel verwerkingseenheden kunnen noemen) die parallel werken. Dit betekent dat een dual-core twee verwerkingseenheden heeft, een quad-core vier verwerkingseenheden, enzovoort.
Verder is er ook een processortechnologie die voor het eerst door Intel werd geïntroduceerd om parallel computergebruik te verbeteren, ook wel hyperthreading genoemd.
Bij hyperthreading verschijnt een enkele fysieke CPU-kern als twee logische CPU's die de kern vormen van een besturingssysteem (maar in werkelijkheid is er één fysieke hardwarecomponent).
Merk op dat een enkele CPU-kern slechts één taak tegelijk kan uitvoeren, waardoor technologieën zoals meerdere CPU's/processors, multi-core CPU's en hyper-threading tot leven werden gebracht.
Met meer dan één CPU kunnen meerdere programma's tegelijkertijd worden uitgevoerd. De huidige Intel CPU's gebruiken een combinatie van zowel meerdere cores als hyperthreading-technologie.
Om het aantal beschikbare verwerkingseenheden op een systeem te vinden, kunnen we de opdrachten nproc of lscpu als volgt gebruiken:
nproc
4
OR
lscpu
Een andere manier om het aantal verwerkingseenheden te vinden met behulp van de grep-opdracht, zoals weergegeven.
grep 'model name' /proc/cpuinfo | wc -l
4
Om de systeembelasting verder te begrijpen, zullen we een paar aannames doen. Laten we zeggen dat we hieronder belastinggemiddelden hebben:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
Op een single core-systeem zou dit betekenen:
- De CPU werd gemiddeld volledig (100%) benut; Er zijn de afgelopen minuut 1 processen op de CPU uitgevoerd (1,00).
- De CPU was gemiddeld 60% inactief; er hebben de afgelopen 5 minuten geen processen gewacht op CPU-tijd (0,40).
- De CPU werd gemiddeld met 235% overbelast; De afgelopen 15 minuten wachtten 2,35 processen op CPU-tijd (3,35).
Op een dual-core systeem zou dit betekenen:
- De ene CPU was gemiddeld 100% inactief, er werd één CPU gebruikt; er hebben de afgelopen 1 minuut geen processen gewacht op CPU-tijd (1,00).
- De CPU's waren gemiddeld 160% inactief; er wachtten geen processen op CPU-tijd. (0.40) over de afgelopen 5 minuten.
- De CPU's werden gemiddeld met 135% overbelast; 1,35 processen wachtten op CPU-tijd. (3.35) over de laatste 15 minuten.
Misschien vind je dit ook leuk:
- 20 opdrachtregelprogramma's om de prestaties van Linux te monitoren - Deel 1
- 13 Linux-tools voor prestatiebewaking – Deel 2
- Perf- Een prestatiebewakings- en analysetool voor Linux
- Nmon: Analyseer en bewaak de prestaties van Linux-systemen
Concluderend: als u een systeembeheerder bent, zijn hoge belastinggemiddelden een reële reden om u zorgen over te maken. Als ze hoog zijn, boven het aantal CPU-cores, betekent dit een grote vraag naar de CPU's, en lage belastinggemiddelden onder het aantal CPU-cores vertellen ons dat CPU's onderbenut zijn.