Systeem traag? Hoe te zien of Linux geheugen-, CPU- of IO-gebonden is?

0
223
Shutterstock/solarseven

Systeem traag? Als dit het geval is, is uw systeem ofwel geheugen-, CPU- of I/O-gebonden. Dit artikel laat je een snelle manier zien om erachter te komen welke van de drie het is, zodat je geïnformeerde systeemprestaties kunt verbeteren.

Memory, Compute ( CPU), of I/O Bound?

Als uw systeem traag werkt, is dit bijna altijd te wijten aan de langzaamste component of keten van componenten in uw systeem. Dit kan soms worden veroorzaakt door software, maar vaak is het de hardware die de boosdoener is.

Als u bijvoorbeeld een erg oude en trage schijf heeft, – bijvoorbeeld een nog steeds enigszins gebruikelijke 5400 RPM draaiende schijf, vaak aangeduid als een HDD, of Hard Disk Drive – die schijf kan de bottleneck in je systeem zijn.

Zie het als pijpen waar water doorheen loopt. Stel je het geheugen van je systeem voor, de rekeneenheid (je CPU of Central Processing Unit, de belangrijkste chip/processor in je systeem) en schijven (als onderdeel van het I/O- of Input/Output-systeem) allemaal als waterleidingen. Stel je nu voor dat de langzaamste componenten een kleinere pijp zijn en de snelste componenten een grotere pijp. Als u 10L door elke leiding moet pompen, duurt de langzaamste leiding veel langer dan de grootste.

Op Linux zijn de belangrijkste knelpunten Geheugen (RAM), Compute (CPU) of I/O (schijfbewerkingen). In het geval van geheugen kan snelheid een factor zijn, maar als het bijna op is, is dat een groot probleem. Voor CPU, als je op oudere hardware werkt, werkt elke CPU-kern een stuk langzamer, en er zijn er misschien niet genoeg. Voor I/O kunnen zowel het lezen van trage harde schijven als overmatig schrijven naar de schijf het probleem zijn.

Advertentie

Er zijn hulpmiddelen die u kunt gebruiken om erachter te komen of een systeem geheugen is , Compute (CPU) of I/O-gebonden. Het enige wat je nodig hebt is htop en iotop, twee semi-grafische tools, die eenvoudig op Linux kunnen worden geïnstalleerd.

Htop en iotop installeren

Om htop en iotop te installeren op uw op Debian/Apt gebaseerde Linux-distributie (zoals Ubuntu en Mint), doet u:

sudo apt install htop iotop

Om htop en iotop te installeren op uw RedHat/Op Yum gebaseerde Linux-distributie (zoals RedHat en Fedora), doe:

sudo yum install htop iotop

CPU Bound

Het is gemakkelijk om te zien of een systeem CPU-gebonden is of niet. Typ eenvoudig `htop` op de opdrachtregel en druk op enter. Kijk dan naar de kleurrijke CPU-balken bovenaan het scherm. Als je processor 16 threads heeft, zijn er 16 balken.

De simpele vraag om te beantwoorden is of ze allemaal bijna ‘vol’ (bijna 100%), of dat er voldoende bewegingsruimte is:

Als de balken zo goed als vol zijn, is het systeem duidelijk CPU-gebonden. Merk ook op dat het geheugen (Mem) en de swap (Swp)-balken geenszins vol zijn: dit is geen geheugengerelateerd prestatieprobleem.

Voor wat meer informatie en trending kun je hierna kijken op het ‘Belastingsgemiddelde’ nummer. Hoewel dit aantal zeer willekeurig is, is een beetje bekendheid met uw systeem en het algemene begrip dat als een van deze drie getallen hoger wordt dan tweemaal het aantal threads in uw systeem, het systeem moeite heeft om bij te blijven, hier een heel eind mee.< /p> Advertentie

Het eerste laadgemiddelde is een gemiddelde van 1 minuut, het volgende een gemiddelde van 5 minuten en het laatste getal een gemiddelde van 15 minuten. In dit geval is de belasting van 1 minuut 270, wat bijna 17 keer het aantal threads is: ons systeem is zwaar CPU-gebonden.

Een interessant getal ten slotte om te bekijken is het aantal taken (en in mindere mate threads). Hoewel de exacte lage en hoge watermarkeringen afhankelijk zijn van de mogelijkheden van de onderliggende hardware/machine, kan uw CPU, als het aantal taken te hoog is, sterk van context wisselen (veranderen van het verwerken van de ene taak naar de andere).

Als u meer wilt weten over wat de verschillende kleuren in htop aangeven, zie dan Kleurenbalken in htop – Wat betekenen ze?

Geheugengebonden

Onmiddellijk bij toegang tot htop is het gemakkelijk te zien of een systeem geheugengebonden of niet. Kijk gewoon naar de eerder genoemde geheugen- (Mem) en swap-balken (Swp).

Als de Memory-balk helemaal vol is, en de Swap-balk is bijvoorbeeld 50% vol, dan is het systeem vrijwel zeker zwaar aan het swappen. Swappen is het proces waarbij de inhoud van het hoofdgeheugen wordt uitgewisseld met een schijf (met behulp van een speciaal Swap-bestand of Swap-partitie) omdat het vol is, en het is over het algemeen supertraag. Als een systeem eenmaal begint en doorgaat met wisselen, wordt het onbetaalbaar traag.

Het is gemakkelijk te zien wanneer je geheugen bijna vol raakt, omdat de balk vol raakt. Het gebruik van de wisselruimte kan soms echter een beetje dubbelzinnig zijn.

Advertentie

Er kan bijvoorbeeld 20% in gebruik zijn, maar er is nog voldoende geheugen over. Dit kan erop duiden dat het besturingssysteem enkele geheugengebieden voor laagfrequent gebruik naar schijf heeft verplaatst om het hoofdgeheugen te optimaliseren. Aangezien er voldoende geheugen vrij blijft, is deze situatie prima en geen reden tot bezorgdheid.

Er is ook een uitzondering op een geheugenbalk die behoorlijk vol lijkt, en dat is caching. Uw systeem is mogelijk ingesteld om x hoeveelheid geheugen te reserveren voor caching.

Een andere manier om dit snel te controleren is door free -g uit te voeren op de opdrachtregel (of free -m voor machines met kleinere hoeveelheden geheugen zoals een Raspberry Pi):

Dit is gemakkelijk te lezen: 62 gigabyte geheugen, 25 in gebruik, 12 vrij en 24 momenteel toegewezen aan buffers en cache. De 32 beschikbare is een geschat totaal van werkelijk gratis (12) en alles wat is toegewezen aan buffers en cache (24) minus wat al in gebruik is (niet getoond), of met andere woorden 12 + 24 = 36 en 32 is beschikbaar, dus ongeveer 4 gigabyte wordt gebruikt door buffers en caching.

Merk op dat we ook kunnen zien hoeveel swapruimte is gereserveerd (10 gigabyte) en hoeveel hier wordt gebruikt: 0 momenteel, en dus 10 gratis.

p>

I/O-gebonden

Laten we zeggen dat je htop aan het controleren bent en dit ziet:

< img src="http://www.cloudsavvyit.com/pagespeed_static/1.JiBnMqyl6S.gif" />

Het systeem ziet er druk uit, maar niet druk genoegals CPU-gebonden worden beschouwd. Het gebruikte/vrije geheugen en de wisselbalken zien er ook goed uit. Laten we iotop als volgende afrekenen. Om dit te doen, moet je sudo iotop gebruiken om iotop te starten, aangezien iotop sudo vereist.

Advertentie

De bovenste twee balken zijn het handigst om snel te analyseren of een systeem worstelt met schijfdoorvoer en is dus I/O-gebonden.

< p>Hoewel het M/s-getal niet superhoog is in termen van moderne SSD, is het constant lezen en schrijven van enkele megabytes per seconde naar een langzame HDD-schijf behoorlijk intense I/O!

Dit nummer, als je het een tijdje bekijkt, samen met de proceslijst eronder (om te zien wie de topgebruikers zijn), en het bovenste gedeelte van de htop-uitvoer (in termen van CPU en geheugen) geeft een goed algemeen gevoel voor of een systeem is geheugen-, CPU- of I/O-gebonden.

Prestatieproblemen verminderen

De systeemwijzigingen die nodig zijn om prestatieproblemen te verminderen, zijn altijd zowel specifiek voor het systeem als voor de specifieke ervaren situatie. Een paar voorbeelden:

Is het systeem Schijf/IO gebonden? Het kan zinvol zijn om sommige log-services voor zwaar schrijven te stoppen, om het I/O-systeem te upgraden (bijvoorbeeld door een SATA-kaart in een oude computer toe te voegen), om over te schakelen naar een sneller opslagapparaat (zoals een op NVMe gebaseerde schijf in plaats van een HDD), of om gewoon een snellere SSD te vinden.

Is het systeem Geheugen/Swap gebonden? Het kan bijvoorbeeld zinvol zijn om minder virtuele machines te draaien, minder geheugenintensieve processen uit te voeren of meer fysieke hardwaregeheugenmodules toe te voegen.

Advertentie

Is het systeem CPU-gebonden? Gebruik de onderste proceslijst in htop om het proces te vinden dat de CPU belast. Je kunt het zelfs direct vanuit htop beëindigen door de F9-toets te gebruiken.

Als het probleem de CPU zelf is (d.w.z. dat de CPU duidelijk niet de meest elementaire taken van het systeem bijhoudt), is het veranderen van hardware een beetje ingewikkelder. Je moet een snellere CPU vinden die nog steeds compatibel is met de socket op het moederbord, en zelfs in dat geval kunnen prestatieverbeteringen klein zijn. Het is misschien tijd om het systeem in zijn geheel te upgraden.

Meer dan één prestatie-bottleneck?

Om terug te komen op onze waterpijp-analogie: houd er rekening mee dat soms een knelpunt kan worden veroorzaakt door een combinatie van verschillende componenten.

Als een oude of goedkope I/O-controllerkaart bijvoorbeeld 80% van de CPU-tijd nodig heeft om gegevens te verwerken, en de schijf die eraan is bevestigd een langzame HDD-drive is die 80% van zijn capaciteiten gebruikt, zelfs met de doorvoer van de goedkopere I/O-kaart, dan creëren beide een algemeen probleem dat niet zal worden opgelost door een van beide aan te pakken. Beide moeten worden gerepareerd voordat het systeem weer goed presteert.

Afronding

Of u nu een DevOps-engineer bent of een Linux-gebruiker voor thuiscomputers, wetende hoe u snel kunt analyseren of uw systeem geheugen-, CPU- of I/O-gebonden is, zal u helpen betere software- en hardwarewijzigingen door te voeren om tegemoet te komen aan het prestatieprobleem dat wordt ervaren.