Prestatiegegevens verzamelen voor een Virtuele Linux-machine
Van toepassing op: ✔️ Virtuele Linux-machines
In dit artikel wordt beschreven hoe u metrische prestatiegegevens ophaalt van een virtuele Linux-machine (VM) in Microsoft Azure met behulp van de sysstat-hulpprogramma's (hulpprogramma's voor prestatiebewaking). Het biedt voorbeelden van het gebruik van deze hulpprogramma's en het lezen van hun uitvoer.
Er zijn verschillende opdrachten beschikbaar voor het verzamelen van prestatiemeteritems in Linux. Opdrachten zoals vmstat
en uptime
bieden essentiële systeemgegevens, zoals CPU-gebruik, systeemgeheugen en systeembelasting. De meeste van deze opdrachten zijn standaard vooraf geïnstalleerd, terwijl andere eenvoudig toegankelijk zijn vanuit de standaardopslagplaatsen.
Op basis van het type metrische gegevens kunnen deze opdrachten worden gecategoriseerd in:
Sysstat-hulpprogramma's voor Linux installeren
U kunt de Sysstat-hulpprogramma's installeren op een Linux-VM met behulp van een Bash-opdracht of de functie Opdracht uitvoeren via de Azure CLI. Als u de Azure CLI-opdrachten in dit artikel gebruikt, moet u ervoor zorgen dat de volgende twee omgevingsvariabelen zijn ingesteld. U moet de naam van de resourcegroep en de VM-naam vervangen door de werkelijke waarden.
export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"
Notitie
Voor sommige van de volgende opdrachten zijn hoofdbevoegdheden vereist.
Gebruik de volgende opdracht om het sysstat
pakket op een Virtuele Linux-machine te installeren:
Ubuntu:
Red Hat:
SUSE:
CPU
mpstat
De mpstat
opdracht maakt deel uit van het sysstat
pakket. Het geeft het CPU-gebruik en het gemiddelde weer van elke CPU, wat handig is bij het identificeren van CPU-gebruik. De mpstat
opdracht biedt een overzicht van het CPU-gebruik van de beschikbare CPU's, waardoor het gebruiksbalans kan worden geïdentificeerd en of één CPU overbelast is.
Hier volgt een voorbeeld van het uitvoeren mpstat
:
-P
: Geeft de processor aan om statistieken weer te geven en hetALL
argument geeft aan dat statistieken van alle online CPU's in het systeem moeten worden weergegeven.1
: Het eerste numerieke argument geeft het interval (in seconden) aan waaropmpstat
nieuwe statistieken moeten worden vernieuwd en weergegeven.2
: Het tweede numerieke argument geeft het aantal kerenmpstat
aan dat statistieken moeten worden weergegeven. In dit geval worden twee statistieken afgedrukt met een interval van één seconde.
U kunt het aantal keren argument verhogen om langere gegevensverzamelingstijden mogelijk te maken. Over het algemeen zijn drie of vijf seconden voldoende. Voor systemen met hogere kernaantallen kan het verminderen tot twee seconden helpen bij het beheren van het aantal weergegeven gegevens.
De mpstat-uitvoer lezen
Hier volgt een voorbeeld van uitvoer van mpstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
16:55:50 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
16:55:51 all 69.09 0.00 30.16 0.00 0.38 0.38 0.00 0.00 0.00 0.00
16:55:51 0 77.23 0.00 21.78 0.00 0.99 0.00 0.00 0.00 0.00 0.00
16:55:51 1 97.03 0.00 0.99 0.00 0.99 0.99 0.00 0.00 0.00 0.00
16:55:51 2 11.11 0.00 88.89 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16:55:51 3 11.00 0.00 88.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
16:55:51 4 83.84 0.00 16.16 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16:55:51 5 76.00 0.00 23.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00
16:55:51 6 96.00 0.00 3.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
16:55:51 7 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[...]
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 74.02 0.00 25.52 0.00 0.25 0.21 0.00 0.00 0.00 0.00
Average: 0 63.00 0.00 36.67 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 1 97.33 0.00 1.67 0.00 0.33 0.67 0.00 0.00 0.00 0.00
Average: 2 42.33 0.00 57.33 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 3 34.33 0.00 65.00 0.00 0.33 0.33 0.00 0.00 0.00 0.00
Average: 4 88.63 0.00 11.04 0.00 0.00 0.33 0.00 0.00 0.00 0.00
Average: 5 71.33 0.00 28.33 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 6 95.65 0.00 4.01 0.00 0.00 0.33 0.00 0.00 0.00 0.00
Average: 7 99.67 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Er zijn verschillende belangrijke dingen die u moet noteren. De eerste regel bevat nuttige informatie:
- Kernel en release:
5.14.0-362.8.1.el9_3.x86_64
- Hostnaam:
alma9
- Datum:
02/21/24
- Architectuur:
_x86_64_
- Totaal aantal CPU's (deze informatie is handig om de uitvoer van andere opdrachten te interpreteren):
(8 CPU)
Vervolgens worden de metrische gegevens voor de CPU's weergegeven. Hier volgt een uitleg van elke kolom:
Time
: De tijdstempel die aangeeft wanneer het monster is verzameld.CPU
: De numerieke id voor de CPU. De idall
vertegenwoordigt een gemiddelde voor alle CPU's.%usr
: Het percentage CPU-gebruik per gebruikersruimteprocessen, meestal gebruikerstoepassingen.%nice
: Het percentage CPU-gebruik door gebruikersruimteprocessen met een mooie waarde (prioriteit).%sys
: Het percentage CPU-gebruik per kernelruimteprocessen.%iowait
: Het percentage niet-actieve CPU-tijd dat wacht op openstaande I/O-bewerkingen.%irq
: Het percentage CPU-tijd dat is besteed aan het onderhoud van hardwareonderbreken.%soft
: Het percentage CPU-tijd dat is besteed aan het onderhoud van softwareonderbreken.%steal
: Het percentage CPU-tijd dat een VM heeft besteed aan andere VM's (niet van toepassing op Azure vanwege een gebrek aan CPU-overinrichting).%guest
: Het percentage CPU-tijd dat een virtuele CPU heeft besteed aan vm's (niet van toepassing op Azure; alleen relevant voor bare-metalsystemen waarop VM's worden uitgevoerd).%gnice
: Het percentage CPU-tijd dat een virtuele CPU met een mooie waarde is besteed aan het leveren van VM's (niet van toepassing op Azure; alleen relevant voor bare-metalsystemen waarop VM's worden uitgevoerd).%idle
: Het percentage CPU-tijd dat niet actief was en niet wacht op I/O-aanvragen.
Belangrijkste overwegingen
Belangrijke overwegingen bij het controleren van de uitvoer van mpstat
:
- Controleer of alle CPU's correct zijn geladen en niet één CPU alle belasting dient. Deze informatie kan duiden op een toepassing met één thread.
- Zoek naar een gezonde balans tussen
%usr
en%sys
, omdat het tegenovergestelde meer tijd aangeeft aan de werkelijke workload dan het leveren van kernelprocessen. %iowait
Zoek naar percentages, omdat hoge waarden kunnen duiden op een systeem dat voortdurend wacht op I/O-aanvragen.- Hoog
%soft
gebruik kan duiden op hoog netwerkverkeer.
vmstat
Het vmstat
hulpprogramma is algemeen beschikbaar in de meeste Linux-distributies. Het biedt een algemeen overzicht van het CPU-, geheugen- en schijf-I/O-gebruik in één deelvenster.
Hier volgt een voorbeeld van het uitvoeren vmstat
:
-w
: Gebruik breed afdrukken om consistente kolommen te behouden.1
: Het eerste numerieke argument geeft het interval in seconden tussen elk rapport aan. In dit geval voert vmstat elke seconde een rapport uit.5
: Het tweede numerieke argument geeft het aantal rapporten vmstat moet genereren. Met5
deze opgegeven status genereert vmstat in totaal vijf rapporten.
De vmstat-uitvoer lezen
Hier volgt een voorbeeld van uitvoer van vmstat
:
--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa st
14 0 0 26059408 164 137468 0 0 89 3228 56 122 3 1 95 1 0
14 1 0 24388660 164 145468 0 0 0 7811 3264 13870 76 24 0 0 0
18 1 0 23060116 164 155272 0 0 44 8075 3704 15129 78 22 0 0 0
18 1 0 21078640 164 165108 0 0 295 8837 3742 15529 73 27 0 0 0
15 2 0 19015276 164 175960 0 0 9 8561 3639 15177 73 27 0 0 0
De uitvoer is onderverdeeld in de volgende zes groepen. De uitvoer toont algemene statistieken voor het hele systeem (dat wil gezegd, alle CPU's en blokapparaten samengevoegd).
procs
: Statistieken voor processen.memory
: Statistieken voor systeemgeheugen.swap
: Statistieken voor wisselen.io
: Statistieken voor schijf-I/O.system
: Statistieken voor contextswitches en onderbrekingen.cpu
: Statistieken voor CPU-gebruik.
procs
De sectie procs heeft twee kolommen:
r
: Het aantal runnable processen in de uitvoeringswachtrij.b
: Het aantal processen dat wacht op I/O.
In deze sectie wordt onmiddellijk weergegeven of er een knelpunt in het systeem is. Hoge getallen in beide kolommen geven processen aan die in de wachtrij staan en wachten op resources.
De r
kolom geeft het aantal processen aan dat wacht tot de CPU-tijd wordt uitgevoerd. Een eenvoudige manier om dit aantal te interpreteren is als volgt: als het aantal processen in de r
wachtrij hoger is dan het totale aantal CPU's, kan worden afgeleid dat de CPU van het systeem te zwaar wordt belast om CPU-tijd toe te wijzen voor alle processen die wachten om uit te voeren.
De b
kolom geeft het aantal processen aan dat moet worden uitgevoerd en geblokkeerd door I/O-aanvragen. Een hoog getal in deze kolom geeft een systeem aan dat een hoge I/O heeft en processen niet kunnen worden uitgevoerd omdat andere processen wachten totdat I/O-aanvragen zijn voltooid. Dit kan ook duiden op hoge schijflatentie.
geheugen
De geheugensectie heeft vier kolommen. De waarden worden weergegeven in bytes. Deze sectie bevat een algemeen overzicht van het geheugengebruik.
swpd
: De hoeveelheid wisselgeheugen die wordt gebruikt.free
: De hoeveelheid vrij geheugen.buff
: De hoeveelheid geheugen die wordt gebruikt voor buffers.cache
: De hoeveelheid geheugen die wordt gebruikt voor cache.
ruilen
De wisselsectie heeft twee kolommen:
si
: De hoeveelheid geheugen die is gewisseld in (verplaatst van systeemgeheugen naar wissel) per seconde.so
: De hoeveelheid geheugen die is verwisseld (verplaatst van wissel naar systeemgeheugen) per seconde.
Als een hoge si
waarde wordt waargenomen, kan het een systeem vertegenwoordigen dat onvoldoende systeemgeheugen heeft en pagina's verplaatst om te wisselen (wisselen).
Io
De io-sectie heeft twee kolommen. Deze waarden bevinden zich in blokken per seconde.
bi
: Het aantal blokken dat is ontvangen van een blokapparaat (leesblokken per seconde) per seconde.bo
: Het aantal blokken dat per seconde naar een blokapparaat wordt verzonden (schrijfbewerkingen per seconde).
systeem
De systeemsectie heeft twee kolommen:
in
: Het aantal interrupts per seconde.cs
: Het aantal contextswitches per seconde.
Een groot aantal interrupts per seconde kan duiden op een systeem dat bezig is met hardwareapparaten (bijvoorbeeld netwerkbewerkingen).
Een groot aantal contextswitches kan duiden op een bezet systeem met veel kortlopende processen. Er is hier geen goed of slecht nummer.
CPU
De cpu
sectie heeft vijf kolommen:
us
: percentage gebruikersruimtegebruik.sy
: Percentage systeemgebruik (kernelruimte).id
: gebruikspercentage van de niet-actieve CPU-tijd.wa
: Gebruikspercentage van de inactieve CPU-tijd die wacht op processen met I/O.st
: gebruikspercentage van de CPU-tijd die is besteed aan andere virtuele CPU's (niet van toepassing op Azure).
De waarden worden weergegeven in percentages. Deze waarden zijn hetzelfde als de waarden die door het mpstat
hulpprogramma worden gepresenteerd en dienen om een algemeen overzicht van het CPU-gebruik te bieden. Volg een proces dat vergelijkbaar is met mpstat bij het controleren van deze waarden.
Uptime
Het uptime
hulpprogramma biedt een breed overzicht van de systeembelasting met de gemiddelde waarden voor de belasting.
De uitvoer van de uptime lezen
Hier volgt een voorbeeld van uitvoer van uptime
:
16:55:53 up 9 min, 2 users, load average: 9.26, 2.91, 1.18
Er load average
worden drie getallen weergegeven. Deze getallen komen overeen met de systeembelasting in 1
, 5
en 15
minuutintervallen.
Als u deze waarden wilt interpreteren, is het belangrijk om te weten hoeveel CPU's er beschikbaar zijn in het systeem, die zijn verkregen uit de vorige mpstat
uitvoer. De waarde is afhankelijk van het totale aantal CPU's, dus als u de mpstat
uitvoer als voorbeeld gebruikt, heeft het systeem acht CPU's en betekent een belastingsgemiddelde van 8
100% dat alle kernen worden geladen.
Een waarde van 4
deze waarde betekent dat de helft van de CPU's wordt geladen op 100% (of een totale belasting van 50% voor alle CPU's). In de vorige uitvoer is 9.26
het laadgemiddelde, wat betekent dat de CPU ongeveer 115% wordt geladen.
De 1m
, 5m
en 15m
intervallen helpen bepalen of de belasting na verloop van tijd toeneemt of afneemt.
Daarnaast kan de nproc
opdracht worden gebruikt om het aantal CPU's op te halen.
Geheugen
Voor geheugen kunnen twee opdrachten gegevens over geheugengebruik ophalen.
vrij
De free
opdracht toont het geheugengebruik van het systeem.
Hier volgt een voorbeeld van het uitvoeren free
:
-h
: Met deze optie geeft u de uitvoerindeling op die door mensen kan worden gelezen. Het converteert de geheugengrootten van bytes naar een beter leesbare indeling (kilobytes, megabytes en gigabytes) en voegt de juiste eenheidslabels (KB, MB en GB) toe.
De gratis uitvoer lezen
Hier volgt een voorbeeld van uitvoer van free
:
total used free shared buff/cache available
Mem: 31Gi 19Gi 12Gi 23Mi 87Mi 11Gi
Swap: 23Gi 0B 23Gi
Bekijk vanuit de uitvoer het total
systeemgeheugen versus het available
geheugen en de used
versus total
wissel. Het beschikbare geheugen beschouwt geheugen dat is toegewezen aan de cache, die kan worden geretourneerd aan gebruikerstoepassingen. Sommige wisselgebruik is normaal in moderne kernels, omdat sommige niet-gebruikte geheugenpagina's kunnen worden verplaatst naar wisselen.
wissel
De swapon
opdracht geeft weer waar wisselen is geconfigureerd en de respectieve prioriteiten van de wisselapparaten of bestanden.
Hier volgt een voorbeeld van het uitvoeren swapon
:
Hier volgt een voorbeeld van uitvoer van swapon
:
Filename Type Size Used Priority
/dev/zram0 partition 16G 0B 100
/mnt/swapfile file 8G 0B -2
Deze informatie is belangrijk om te controleren of wisselen is geconfigureerd op een niet-ide locatie, bijvoorbeeld op een gegevens- of besturingssysteemschijf. In het Referentieframe van Azure moet wisselen worden geconfigureerd op het kortstondige station, omdat deze de beste prestaties biedt.
Belangrijkste overwegingen
- Vergeet niet dat geheugen een eindige resource is. Zodra zowel systeemgeheugen (RAM) als wissel uitgeput zijn, zal de OOM-moordenaar (Out Of Memory Killer) de processen doden.
- Controleer of wisselen niet is geconfigureerd op een gegevensschijf of besturingssysteemschijf, omdat dit problemen met I/O kan veroorzaken vanwege latentieverschillen. Wisselen moet worden geconfigureerd op het tijdelijke station.
- Houd er ook rekening mee dat het gebruikelijk is om vrije waarden dicht bij nul in de
free -h
uitvoer te zien. Dit gedrag wordt veroorzaakt door de paginacache; de kernel publiceert deze pagina's indien nodig.
I/O
Schijf-I/O is een van de gebieden waar Azure het meest last van heeft wanneer deze wordt beperkt, omdat latenties voor schijven kunnen worden bereikt 100ms+
. Met de volgende opdrachten kunt u deze scenario's identificeren.
iostat
Het iostat
hulpprogramma maakt deel uit van het sysstat
pakket. Hiermee worden de gebruiksstatistieken voor elk blokapparaat weergegeven en kunnen prestatieproblemen met betrekking tot blokken worden geïdentificeerd. Het bevat details over metrische gegevens, zoals doorvoer, latentie en wachtrijgrootte. Deze metrische gegevens helpen te begrijpen of schijf-I/O een beperkende factor wordt.
Hier volgt een voorbeeld van het uitvoeren iostat
:
-d
: Gebruiksrapport voor elk apparaat.-x
: Uitgebreide statistieken.-t
: Geeft de tijdstempel voor elk rapport weer.-m
: Wordt weergegeven in MB/s.1
: Het eerste numerieke argument geeft aan hoe vaak de weergave in seconden moet worden vernieuwd.2
: Het tweede numerieke argument geeft aan hoe vaak de gegevens worden vernieuwd.
De iostat-uitvoer lezen
Hier volgt een voorbeeld van uitvoer van iostat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
02/21/24 16:55:50
Device r/s rMB/s rrqm/s %rrqm r_await rareq-sz w/s wMB/s wrqm/s %wrqm w_await wareq-sz d/s dMB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
sda 1.07 0.02 0.00 0.00 1.95 20.40 23.25 24.55 3.30 12.42 113.75 1081.06 0.26 537.75 0.26 49.83 0.03 2083250.04 0.00 0.00 2.65 2.42
sdb 16.99 0.67 0.36 2.05 2.00 40.47 65.26 0.44 1.55 2.32 1.32 6.92 0.00 0.00 0.00 0.00 0.00 0.00 30.56 1.30 0.16 7.16
zram0 0.51 0.00 0.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
De uitvoer heeft verschillende kolommen die niet belangrijk zijn (extra kolommen vanwege de -x
optie). Enkele van de belangrijke zijn:
r/s
: Leesbewerkingen per seconde (IOPS).rMB/s
: lees megabytes per seconde.r_await
: Leeslatentie in milliseconden.rareq-sz
: Gemiddelde grootte van leesaanvragen in kilobytes.w/s
: Schrijfbewerkingen per seconde (IOPS).wMB/s
: Megabytes per seconde schrijven.w_await
: Schrijflatentie in milliseconden.wareq-size
: Gemiddelde grootte van schrijfaanvragen in kilobytes.aqu-sz
: Gemiddelde wachtrijgrootte.
Belangrijkste overwegingen
r/s
Zoek ,w/s
(IOPS)rMB/s
enwMB/s
controleer of deze waarden binnen de limieten van de opgegeven schijf vallen. Als de waarden dicht bij of hoger zijn dan de limieten, wordt de schijf beperkt, wat leidt tot een hoge latentie. Deze informatie kan ook worden bevestigd met de%iowait
metrische waarde vanmpstat
.- Latentie is een uitstekende metriek om te controleren of de schijf werkt zoals verwacht. Normaal gesproken is minder dan
9ms
de verwachte latentie voor PremiumSSD. Andere aanbiedingen hebben verschillende latentiedoelen. - De wachtrijgrootte is een uitstekende indicator van verzadiging. Normaal gesproken worden aanvragen in bijna realtime verwerkt en blijft het aantal dicht bij één (naarmate de wachtrij nooit groeit). Een hoger getal kan duiden op schijfverzadiging (dat wil gezegd aanvragen in de wachtrij plaatsen). Er is geen goed of ongeldig getal voor deze metrische waarde. Als u begrijpt dat een getal dat hoger is dan één, betekent dat aanvragen in de wachtrij staan, kunt u bepalen of er sprake is van schijfverzadiging.
lsblk
Het lsblk
hulpprogramma toont de blokapparaten die aan het systeem zijn gekoppeld. Hoewel er geen prestatiemetrieken worden geboden, kunt u snel zien hoe deze apparaten worden geconfigureerd en welke koppelpunten worden gebruikt.
Hier volgt een voorbeeld van het uitvoeren lsblk
:
De lsblk-uitvoer lezen
Hier volgt een voorbeeld van uitvoer van lsblk
:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 300G 0 disk
└─sda1 8:1 0 300G 0 part /mnt
sdb 8:16 0 30G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 200M 0 part /boot/efi
├─sdb3 8:19 0 1G 0 part /boot
└─sdb4 8:20 0 28.8G 0 part /
zram0 252:0 0 16G 0 disk [SWAP]
Belangrijkste overwegingen
- Zoek waar de apparaten zijn gekoppeld.
- Controleer of wisselen niet is geconfigureerd binnen een gegevensschijf of besturingssysteemschijf, indien ingeschakeld.
- Een eenvoudige manier om een blokapparaat te correleren met een LUN in Azure is door uit te voeren
ls -lr /dev/disk/azure
.
Proces
Het verzamelen van details per proces helpt inzicht te krijgen in waar de systeembelasting vandaan komt. Het belangrijkste hulpprogramma voor het verzamelen van processtatistieken is pidstat
, omdat het details biedt over CPU-, geheugen- en I/O-statistieken voor elk proces. Ten slotte is het eenvoudig ps
om het proces te sorteren op het hoogste CPU- en geheugengebruik, worden de metrische gegevens voltooid.
Notitie
Voor deze opdrachten zijn hoofdbevoegdheden vereist om sudo
details van alle actieve processen weer te geven, niet alleen die van de huidige gebruiker.
pidstat
Het pidstat
hulpprogramma maakt ook deel uit van het sysstat
pakket. Het lijkt of mpstat
iostat in dat metrische gegevens voor een bepaald tijdsbereik worden weergegeven. pidstat
Standaard worden metrische gegevens alleen weergegeven voor processen met activiteit.
De argumenten voor pidstat
zijn hetzelfde als voor andere sysstat
hulpprogramma's:
1
: Het eerste numerieke argument geeft aan hoe vaak de weergave in seconden moet worden vernieuwd.2
: Het tweede numerieke argument geeft aan hoe vaak de gegevens worden vernieuwd.
Notitie
De uitvoer kan aanzienlijk toenemen als er veel processen met activiteit zijn.
CPU-statistieken verwerken
Als u proces-CPU-statistieken wilt verzamelen, voert u deze uit pidstat
zonder opties:
De uitvoer van cpu-statistieken lezen
Hier volgt een voorbeeld van uitvoer van pidstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
# Time UID PID %usr %system %guest %wait %CPU CPU Command
16:55:48 0 66 0.0% 1.0% 0.0% 0.0% 1.0% 0 kworker/u16:2-xfs-cil/sdb4
16:55:48 0 70 0.0% 1.0% 0.0% 0.0% 1.0% 0 kworker/u16:6-xfs-cil/sdb4
16:55:48 0 92 0.0% 1.0% 0.0% 0.0% 1.0% 3 kworker/3:1H-kblockd
16:55:48 0 308 0.0% 1.0% 0.0% 0.0% 1.0% 1 kworker/1:1H-kblockd
16:55:48 0 2068 0.0% 1.0% 0.0% 0.0% 1.0% 1 kworker/1:3-xfs-conv/sdb4
16:55:48 0 2181 63.1% 1.0% 0.0% 35.9% 64.1% 5 stress-ng-cpu
16:55:48 0 2182 28.2% 0.0% 0.0% 70.9% 28.2% 6 stress-ng-cpu
16:55:48 0 2183 28.2% 0.0% 0.0% 69.9% 28.2% 7 stress-ng-cpu
16:55:48 0 2184 62.1% 0.0% 0.0% 36.9% 62.1% 0 stress-ng-cpu
16:55:48 0 2185 43.7% 0.0% 0.0% 54.4% 43.7% 2 stress-ng-cpu
16:55:48 0 2186 30.1% 0.0% 0.0% 68.0% 30.1% 7 stress-ng-cpu
16:55:48 0 2187 64.1% 0.0% 0.0% 34.0% 64.1% 3 stress-ng-cpu
Met de opdracht wordt het gebruik van %usr
, %system
( %guest
niet van toepassing op Azure) %wait
en het totale %CPU
gebruik voor elk proces weergegeven.
Belangrijkste overwegingen
- Zoek naar processen met hoge
%wait
(iowait)-percentages, omdat dit kan duiden op processen die worden geblokkeerd op I/O, wat ook kan duiden op schijfverzadiging. - Controleer of er geen enkel proces 100% van de CPU verbruikt, omdat dit kan duiden op een toepassing met één thread.
Geheugenstatistieken verwerken
Als u procesgeheugenstatistieken wilt verzamelen, gebruikt u de -r
volgende optie:
Uitvoer van geheugenstatistieken lezen
Hier volgt een voorbeeld van uitvoer van pidstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
# Time UID PID minflt/s majflt/s VSZ RSS %MEM Command
16:55:49 0 2199 119244.12 0.00 13.6G 7.4G 23.5% stress-ng-vm
16:55:49 0 2200 392911.76 0.00 13.6G 9.3G 29.7% stress-ng-vm
16:55:49 0 2211 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2220 0.98 0.00 71.8M 2.4M 0.0% stress-ng-iomix
16:55:49 0 2239 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2240 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2256 0.98 0.00 71.8M 2.4M 0.0% stress-ng-iomix
16:55:49 0 2265 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
De verzamelde metrische gegevens zijn:
minflt/s
: Kleine fouten per seconde. Deze metrische waarde geeft het aantal pagina's aan dat is geladen vanuit het systeemgeheugen (RAM).mjflt/s
: Belangrijke fouten per seconde. Deze metrische waarde geeft het aantal pagina's aan dat is geladen vanaf schijf (SWAP).VSZ
: Virtueel geheugen dat wordt gebruikt in bytes.RSS
: Ingezet geheugen gebruikt (werkelijk toegewezen geheugen) in bytes.%MEM
: Het percentage van het totale gebruikte geheugen.Command
: De naam van het proces.
Belangrijkste overwegingen
- Zoek naar belangrijke fouten per seconde, omdat deze waarde zou duiden op een proces dat pagina's verwisselt naar of van schijf. Dit gedrag kan duiden op geheugenuitputting en leiden tot
OOM
gebeurtenissen of prestatievermindering als gevolg van tragere swapping. - Controleer of één proces niet 100% van het beschikbare geheugen verbruikt. Dit gedrag kan duiden op een geheugenlek.
Tip
De --human
optie kan worden gebruikt om getallen weer te geven in een door mensen leesbare indeling (kb, MB en GB).
I/O-statistieken verwerken
Als u proces-I/O-statistieken wilt verzamelen, gebruikt u de -d
optie:
Hier volgt een voorbeeld van uitvoer van pidstat
:
# Time UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
16:55:50 0 86 55.4k 0.0B 0.0B 0 kworker/1:1-xfs-conv/sdb4
16:55:50 0 2201 4.0k 194.1k 0.0B 0 stress-ng-iomix
16:55:50 0 2202 0.0B 99.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2203 0.0B 23.8k 0.0B 0 stress-ng-iomix
16:55:50 0 2204 0.0B 15.8k 0.0B 0 stress-ng-iomix
16:55:50 0 2212 0.0B 103.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2213 4.0k 99.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2215 0.0B 178.2k 0.0B 0 stress-ng-iomix
16:55:50 0 2216 7.9k 237.6k 0.0B 0 stress-ng-iomix
16:55:50 0 2218 0.0B 95.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2221 0.0B 15.8k 0.0B 0 stress-ng-iomix
De verzamelde metrische gegevens zijn:
kB_rd/s
: kilobytes per seconde lezen.kB_wr/s
: kilobytes per seconde schrijven.Command
: De naam van het proces.
Belangrijkste overwegingen
- Zoek naar afzonderlijke processen met een hoge lees-/schrijfsnelheid per seconde. Deze informatie is richtlijnen voor processen met I/O meer dan het identificeren van problemen.
Tip
De --human
optie kan worden gebruikt om getallen weer te geven in een door mensen leesbare indeling (kb, MB en GB).
PS
Ten slotte geeft de ps
opdracht systeemprocessen weer en kan worden gesorteerd op CPU of geheugen.
De top 10 processen sorteren %CPU
en ophalen:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2190 94.8 0.0 73524 5588 pts/1 R+ 16:55 0:14 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2200 56.8 43.1 14248092 14175632 pts/1 R+ 16:55 0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2192 50.6 0.0 73524 5836 pts/1 R+ 16:55 0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2184 50.4 0.0 73524 5836 pts/1 R+ 16:55 0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2182 44.3 0.0 73524 5808 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2187 43.4 0.0 73524 5708 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2199 42.9 33.0 14248092 10845272 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2186 42.0 0.0 73524 5836 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2191 41.2 0.0 73524 5592 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
De top 10 processen sorteren %MEM
en ophalen:
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2200 57.0 43.1 14248092 14175632 pts/1 R+ 16:55 0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2199 43.0 33.0 14248092 10871144 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 1231 0.2 0.1 336308 33764 ? Sl 16:46 0:01 /usr/bin/python3 -u bin/WALinuxAgent-2.9.1.1-py3.8.egg -run-exthandlers
root 835 0.0 0.0 127076 24860 ? Ssl 16:46 0:00 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
root 1199 0.0 0.0 30164 15600 ? Ss 16:46 0:00 /usr/bin/python3 -u /usr/sbin/waagent -daemon
root 1 0.2 0.0 173208 12356 ? Ss 16:46 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
root 966 0.0 0.0 3102460 10936 ? Sl 16:46 0:00 /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-1.26.60/GCAgent/GC/gc_linux_service
panzer 1803 0.0 0.0 22360 8220 ? Ss 16:49 0:00 /usr/lib/systemd/systemd --user
root 2180 0.0 0.0 73524 6968 pts/1 SL+ 16:55 0:00 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
Rapporten samenvoegen
Het volgende Bash-script kan alle details in één uitvoering verzamelen en de uitvoer toevoegen aan een bestand voor toekomstige naslaginformatie:
mpstat -P ALL 1 2 && vmstat -w 1 5 && uptime && free -h && swapon && iostat -dxtm 1 1 && lsblk && ls -l /dev/disk/azure && pidstat 1 1 -h --human && pidstat -r 1 1 -h --human && pidstat -d 1 1 -h --human && ps aux --sort=-%cpu | head -20 && ps aux --sort=-%mem | head -20
Als u wilt uitvoeren, maakt u een bestand met de voorgaande inhoud, voegt u machtigingen toe execute
door deze uit te voeren chmod +x gather.sh
en voert u het vervolgens uit met sudo ./gather.sh
.
Met dit script wordt de uitvoer van de opdrachten opgeslagen in een bestand in dezelfde map waarin het script is aangeroepen.
Bovendien kunnen alle opdrachten in de Bash-blokcodes die in dit document worden behandeld, worden uitgevoerd via de Azure CLI met behulp van de run-command
extensie en het parseren van de uitvoer jq
om uitvoer te verkrijgen die vergelijkbaar is met het lokaal uitvoeren van de opdrachten.
az vm run-command invoke -g $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --command-id RunShellScript --scripts "ls -l /dev/disk/azure" | jq -r '.value[0].message'
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.