Samla in prestandamått för en virtuell Linux-dator
Gäller för: ✔️ Virtuella Linux-datorer
Den här artikeln beskriver hur du hämtar prestandamått från en virtuell Linux-dator (VM) i Microsoft Azure med hjälp av Sysstat-verktygen (verktyg för prestandaövervakning). Den innehåller exempel på hur du använder dessa verktyg och läser deras utdata.
Det finns flera kommandon för att samla in prestandaräknare i Linux. Kommandon som vmstat
och uptime
tillhandahåller viktiga systemmått som CPU-användning, systemminne och systembelastning. De flesta av dessa kommandon är förinstallerade som standard, medan andra enkelt kan nås från standardlagringsplatserna.
Baserat på typen av mått kan dessa kommandon kategoriseras i:
Installera Sysstat-verktyg för Linux
Du kan installera Sysstat-verktygen på en virtuell Linux-dator med hjälp av ett Bash-kommando eller funktionen Kör kommando via Azure CLI. Om du använder Azure CLI-kommandona i den här artikeln kontrollerar du att följande två miljövariabler har angetts. Du måste ersätta resursgruppens namn och vm-namn med de faktiska värdena.
export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"
Kommentar
Vissa av följande kommandon kräver rotprivilegier.
Om du vill installera sysstat
paketet på en virtuell Linux-dator använder du följande kommando:
Ubuntu:
sudo apt install sysstat -y
Röd hatt:
sudo dnf install sysstat -y
SUSE:
sudo zypper install sysstat --non-interactive
Processor
mpstat
Kommandot mpstat
är en del av sysstat
paketet. Den visar processoranvändningen och medelvärdet för varje PROCESSOR, vilket är användbart för att identifiera CPU-användning. Kommandot mpstat
ger en översikt över CPU-användningen av tillgängliga processorer, vilket hjälper till att identifiera användningssaldot och om en enda processor är överbelastad.
Här är ett exempel på hur du kör mpstat
:
mpstat -P ALL 1 2
-P
: Anger att processorn ska visa statistik, ochALL
argumentet anger att statistik för alla online-processorer i systemet ska visas.1
: Det första numeriska argumentet anger intervallet (i sekunder) därmpstat
ska uppdateras och visa ny statistik.2
: Det andra numeriska argumentet anger hur många gångermpstat
som ska visa statistik. I det här fallet skriver den ut två statistik med ett intervall på en sekund.
Du kan öka antalet gånger argumentet för att hantera längre datainsamlingstider. I allmänhet räcker det med tre eller fem sekunder. För system med högre antal kärnor kan en minskning till två sekunder hjälpa till att hantera mängden data som visas.
Så här läser du mpstat-utdata
Här är ett exempel på utdata från 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
Det finns flera viktiga saker att notera. Den första raden innehåller användbar information:
- Kernel och version:
5.14.0-362.8.1.el9_3.x86_64
- Värdnamn:
alma9
- Datum:
02/21/24
- Arkitektur:
_x86_64_
- Totalt antal processorer (den här informationen är användbar för att tolka utdata från andra kommandon):
(8 CPU)
Sedan visas måtten för processorerna. Här är en förklaring av varje kolumn:
Time
: Tidsstämpeln som anger när exemplet samlades in.CPU
: Den numeriska identifieraren för processorn. Identifierarenall
representerar ett genomsnitt för alla processorer.%usr
: Procentandelen cpu-användning per användarutrymmesprocesser, vanligtvis användarprogram.%nice
: Procentandelen processoranvändning efter användarutrymmesprocesser med ett trevligt värde (prioritet).%sys
: Procentandelen cpu-användning per kernel-utrymmesprocesser.%iowait
: Procentandelen cpu-inaktiv tid som väntar på utestående I/O-åtgärder.%irq
: Procentandelen cpu-tid som ägnas åt att underhålla maskinvaruavbrott.%soft
: Procentandelen cpu-tid som ägnas åt att underhålla programavbrott.%steal
: Procentandelen cpu-tid som en virtuell dator spenderade på att betjäna andra virtuella datorer (gäller inte för Azure på grund av bristande överetablering av processorer).%guest
: Procentandelen cpu-tid som en virtuell processor har använt för att betjäna virtuella datorer (gäller inte för Azure, endast relevanta för bare metal-system som kör virtuella datorer).%gnice
: Procentandelen cpu-tid en virtuell processor med ett fint värde som används för att betjäna virtuella datorer (gäller inte för Azure, endast relevant för operativsystem utan operativsystem som kör virtuella datorer).%idle
: Procentandelen cpu-tid som var inaktiv och inte väntar på I/O-begäranden.
Viktiga överväganden
Viktiga överväganden vid granskning av mpstat
utdata från :
- Kontrollera att alla processorer är korrekt inlästa och att inte en enda processor hanterar all belastning. Den här informationen kan tyda på ett entrådat program.
- Leta efter en felfri balans mellan
%usr
och%sys
, eftersom motsatsen skulle tyda på mer tid på den faktiska arbetsbelastningen än att hantera kernelprocesser. %iowait
Leta efter procentandelar eftersom höga värden kan tyda på ett system som ständigt väntar på I/O-begäranden.- Hög
%soft
användning kan tyda på hög nätverkstrafik.
vmstat
Verktyget vmstat
är allmänt tillgängligt i de flesta Linux-distributioner. Den ger en översikt på hög nivå över PROCESSOR-, minnes- och disk-I/O-användning i ett enda fönster.
Här är ett exempel på hur du kör vmstat
:
vmstat -w 1 5
-w
: Använd bred utskrift för att behålla konsekventa kolumner.1
: Det första numeriska argumentet anger intervallet i sekunder mellan varje rapport. I det här fallet matar vmstat ut en rapport var sekund.5
: Det andra numeriska argumentet anger hur många rapporter vmstat ska generera. Med5
angivet här genererar vmstat totalt fem rapporter.
Så här läser du vmstat-utdata
Här är ett exempel på utdata från 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
Utdata kategoriseras i följande sex grupper. Utdata visar övergripande statistik för hela systemet (d.v.s. alla processorer och blockenheter aggregerade).
procs
: Statistik för processer.memory
: Statistik för systemminne.swap
: Statistik för växling.io
: Statistik för disk-I/O.system
: Statistik för kontextväxlar och avbrott.cpu
: Statistik för CPU-användning.
procs
Avsnittet procs har två kolumner:
r
: Antalet körbara processer i körningskön.b
: Antalet processer som blockerats i väntan på I/O.
Det här avsnittet visar omedelbart om det finns någon flaskhals i systemet. Höga siffror i båda kolumnerna anger processer som köar och väntar på resurser.
Kolumnen r
anger antalet processer som väntar på att cpu-tiden ska köras. Ett enkelt sätt att tolka det här talet är följande: om antalet processer i r
kön är högre än det totala antalet processorer kan du dra slutsatsen att systemets PROCESSOR är för hårt belastad för att allokera CPU-tid för alla processer som väntar på att köras.
Kolumnen b
anger antalet processer som väntar på att köras och blockeras av I/O-begäranden. Ett högt tal i den här kolumnen skulle indikera ett system som har hög I/O och processer kan inte köras på grund av att andra processer väntar på att I/O-begäranden ska slutföras. Detta kan också tyda på hög diskfördröjning.
minne
Minnesavsnittet har fyra kolumner. Värdena visas i byte. Det här avsnittet innehåller en översikt över minnesanvändning på hög nivå.
swpd
: Mängden växlingsminne som används.free
: Mängden ledigt minne.buff
: Mängden minne som används för buffertar.cache
: Mängden minne som används för cacheminnet.
byta
Växlingsavsnittet har två kolumner:
si
: Mängden minne som växlas in (flyttas från systemminne till växling) per sekund.so
: Mängden minne som växlats ut (flyttats från växling till systemminne) per sekund.
Om en hög si
observeras kan det representera ett system som börjar få slut på systemminne och flytta sidor för att växla (växla).
Io
Io-avsnittet har två kolumner. Dessa värden finns i block per sekund.
bi
: Antalet block som tas emot från en blockenhet (läser block per sekund) per sekund.bo
: Antalet block som skickas till en blockenhet (skrivningar per sekund) per sekund.
system
Systemavsnittet har två kolumner:
in
: Antalet avbrott per sekund.cs
: Antalet kontextväxlar per sekund.
Ett stort antal avbrott per sekund kan tyda på ett system som är upptaget med maskinvaruenheter (till exempel nätverksåtgärder).
Ett stort antal kontextväxlar kan tyda på ett upptaget system med många tidskrävande processer. Det finns inget bra eller dåligt nummer här.
processor
Avsnittet cpu
har fem kolumner:
us
: Användningsprocent för användarutrymme.sy
: Användningsprocent för system (kernelutrymme).id
: Användningsprocent av processorns inaktiva tid.wa
: Användningsprocent av processorns inaktiva tid som väntar på processer med I/O.st
: Användningsprocent av cpu-tiden som ägnas åt andra virtuella processorer (gäller inte för Azure).
Värdena visas i procent. Dessa värden är desamma som de som presenteras av mpstat
verktyget och ger en översikt över CPU-användning på hög nivå. Följ en process som liknar mpstat när du granskar dessa värden.
upptid
Verktyget uptime
ger en bred översikt över systembelastningen med belastningsgenomsnittsvärdena.
uptime
Läsa upptidsutdata
Här är ett exempel på utdata från uptime
:
16:55:53 up 9 min, 2 users, load average: 9.26, 2.91, 1.18
Visar load average
tre tal. Dessa tal motsvarar systembelastningen i 1
, 5
och 15
minutintervall.
För att tolka dessa värden är det viktigt att känna till antalet processorer som är tillgängliga i systemet, som hämtas från tidigare mpstat
utdata. Värdet beror på det totala antalet processorer, så om du använder mpstat
utdata som exempel har systemet åtta processorer, och ett belastningsgenomsnitt 8
på skulle innebära att alla kärnor läses in med 100 %.
4
Värdet skulle innebära att hälften av processorerna läses in med 100 % (eller en total belastning på 50 % för alla processorer). I föregående utdata är 9.26
belastningsgenomsnittet , vilket innebär att processorn läses in med cirka 115 %.
Intervallen 1m
, 5m
och 15m
hjälper dig att identifiera om belastningen ökar eller minskar med tiden.
Dessutom nproc
kan kommandot användas för att hämta antalet processorer.
Minne
För minne kan två kommandon hämta information om minnesanvändning.
free
Kommandot free
visar systemminnesanvändning.
Här är ett exempel på hur du kör free
:
free -h
-h
: Det här alternativet anger utdataformatet som kan läsas av människor. Den konverterar minnesstorlekarna från byte till ett mer läsbart format (kilobyte, megabyte och gigabyte) och lägger till lämpliga enhetsetiketter (KB, MB och GB).
Så här läser du de kostnadsfria utdata
Här är ett exempel på utdata från free
:
total used free shared buff/cache available
Mem: 31Gi 19Gi 12Gi 23Mi 87Mi 11Gi
Swap: 23Gi 0B 23Gi
Observera systemminnet jämfört med available
minnet och växlingen total
used
från utdatatotal
. Det tillgängliga minnet tar hänsyn till det minne som allokerats till cacheminnet, som kan returneras till användarprogram. Viss växlingsanvändning är normal i moderna kärnor, eftersom vissa minnessidor som används sällan kan flyttas till växling.
swapon
Kommandot swapon
visar var växlingen har konfigurerats och respektive prioritet för växlingsenheterna eller filerna.
Här är ett exempel på hur du kör swapon
:
swapon -s
Här är ett exempel på utdata från swapon
:
Filename Type Size Used Priority
/dev/zram0 partition 16G 0B 100
/mnt/swapfile file 8G 0B -2
Den här informationen är viktig för att kontrollera om växlingen har konfigurerats på en icke-ideal plats, till exempel på en data- eller OS-disk. I Referensramen för Azure ska växlingen konfigureras på den tillfälliga enheten eftersom den ger bästa möjliga prestanda.
Viktiga överväganden
- Kom ihåg att minnet är en begränsad resurs. När både systemminnet (RAM) och bytet är uttömt kommer OOM-mördaren (Out Of Memory Killer) att döda processerna.
- Kontrollera att växlingen inte har konfigurerats på en datadisk eller os-disk, eftersom det kan orsaka problem med I/O på grund av skillnader i svarstid. Växling ska konfigureras på den tillfälliga enheten.
- Observera också att det är vanligt att se lediga värden nära noll i
free -h
utdata. Det här beteendet beror på sidcachen. kerneln släpper dessa sidor efter behov.
I/O
Disk-I/O är ett av de områden som Azure drabbas mest av när den begränsas, eftersom svarstider till diskar kan nå 100ms+
. Följande kommandon kan hjälpa dig att identifiera dessa scenarier.
iostat
Verktyget iostat
är en del av sysstat
paketet. Den visar användningsstatistiken för varje blockenhet och hjälper till att identifiera blockrelaterade prestandaproblem. Den innehåller information om mått som dataflöde, svarstid och köstorlek. Dessa mått hjälper dig att förstå om disk-I/O blir en begränsande faktor.
Här är ett exempel på hur du kör iostat
:
iostat -dxtm 1 5
-d
: Användningsrapport för varje enhet.-x
: Utökad statistik.-t
: Visar tidsstämpeln för varje rapport.-m
: Visas i MB/s.1
: Det första numeriska argumentet anger hur ofta visningen ska uppdateras i sekunder.2
: Det andra numeriska argumentet anger hur många gånger data uppdateras.
Så här läser du iostat-utdata
Här är ett exempel på utdata från 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
Utdata har flera kolumner som inte är viktiga (extra kolumner på grund av alternativet -x
). Några av de viktigaste är:
r/s
: Läsåtgärder per sekund (IOPS).rMB/s
: Läs megabyte per sekund.r_await
: Lässvarstid i millisekunder.rareq-sz
: Genomsnittlig storlek på läsbegäran i kilobyte.w/s
: Skrivåtgärder per sekund (IOPS).wMB/s
: Skriv megabyte per sekund.w_await
: Skrivsvarstid i millisekunder.wareq-size
: Genomsnittlig storlek på skrivbegäran i kilobyte.aqu-sz
: Genomsnittlig köstorlek.
Viktiga överväganden
- Leta efter ,
w/s
(IOPS),rMB/s
, ochwMB/s
, och kontrollera att dessa värden ligger inom gränserna förr/s
den angivna disken. Om värdena är nära eller högre än gränserna begränsas disken, vilket leder till hög svarstid. Den här informationen kan också bekräftas med måttet%iowait
frånmpstat
. - Svarstid är ett utmärkt mått för att kontrollera om disken fungerar som förväntat. Normalt är mindre än
9ms
den förväntade svarstiden för PremiumSSD. Andra erbjudanden har olika svarstidsmål. - Köstorleken är en bra indikator på mättnad. Normalt hanteras begäranden i nära realtid och antalet förblir nära ett (eftersom kön aldrig växer). Ett högre tal kan tyda på diskmättnad (d.s. begäranden som köar). Det finns inget bra eller dåligt tal för det här måttet. Att förstå att ett tal som är högre än ett innebär att begäranden köar hjälper till att avgöra om det finns diskmättnad.
lsblk
Verktyget lsblk
visar de blockenheter som är anslutna till systemet. Även om den inte tillhandahåller prestandamått ger den en snabb översikt över hur dessa enheter konfigureras och vilka monteringspunkter som används.
Här är ett exempel på hur du kör lsblk
:
lsblk
Läsa lsblk-utdata
Här är ett exempel på utdata från 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]
Viktiga överväganden
- Leta efter var enheterna monteras.
- Kontrollera att växlingen inte har konfigurerats på en datadisk eller os-disk om den är aktiverad.
- Ett enkelt sätt att korrelera en blockenhet till ett LUN i Azure är att köra
ls -lr /dev/disk/azure
.
Process
Genom att samla in information per process kan du förstå var systembelastningen kommer ifrån. Huvudverktyget för att samla in processstatistik är pidstat
, eftersom det innehåller information om cpu-, minnes- och I/O-statistik för varje process. Slutligen slutför en enkel ps
att sortera processen efter den högsta CPU- och minnesanvändningen måtten.
Kommentar
Dessa kommandon kräver rotprivilegier som använder sudo
för att visa information om alla processer som körs, inte bara den aktuella användarens.
pidstat
Verktyget pidstat
är också en del av sysstat
paketet. Det är som mpstat
eller iostat eftersom det visar mått för ett visst tidsintervall. Som standard pidstat
visar mått endast för processer med aktivitet.
Argumenten för pidstat
är desamma som för andra sysstat
verktyg:
1
: Det första numeriska argumentet anger hur ofta visningen ska uppdateras i sekunder.2
: Det andra numeriska argumentet anger hur många gånger data uppdateras.
Kommentar
Utdata kan öka avsevärt om det finns många processer med aktivitet.
Bearbeta CPU-statistik
Om du vill samla in processorstatistik för processer kör du pidstat
utan några alternativ:
pidstat 1 2
Så här läser du cpu-statistikutdata
Här är ett exempel på utdata från 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
Kommandot visar användningen av %usr
, %system
, %guest
(gäller inte för Azure), %wait
och total %CPU
användning för varje process.
Viktiga överväganden
- Leta efter processer med höga
%wait
(iowait) procenttal, eftersom det kan tyda på processer som är blockerade och väntar på I/O, vilket också kan tyda på diskmättnad. - Kontrollera att ingen enskild process förbrukar 100 % av processorn eftersom det kan tyda på ett entrådat program.
Bearbeta minnesstatistik
Om du vill samla in minnesstatistik för processer använder du alternativet -r
:
pidstat -r 1 2
Läsa minnesstatistikens utdata
Här är ett exempel på utdata från 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 mått som samlas in är:
minflt/s
: Mindre fel per sekund. Det här måttet anger antalet sidor som lästs in från systemminnet (RAM).mjflt/s
: Större fel per sekund. Det här måttet anger antalet sidor som lästs in från disken (SWAP).VSZ
: Virtuellt minne som används i byte.RSS
: Hemmaminne som används (faktiskt allokerat minne) i byte.%MEM
: Procentandelen totalt minne som används.Command
: Namnet på processen.
Viktiga överväganden
- Leta efter större fel per sekund, eftersom det här värdet skulle indikera en process som byter sidor till eller från disk. Det här beteendet kan tyda på minnesöverbelastning och leda till
OOM
händelser eller prestandaförsämring på grund av långsammare byte. - Kontrollera att en enskild process inte förbrukar 100 % av det tillgängliga minnet. Det här beteendet kan tyda på en minnesläcka.
Dricks
Alternativet --human
kan användas för att visa tal i ett läsbart format för människor (d.v.s. KB, MB och GB).
Bearbeta I/O-statistik
Om du vill samla in process-I/O-statistik använder du alternativet -d
:
pidstat -d 1 2
Här är ett exempel på utdata från 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 mått som samlas in är:
kB_rd/s
: Läs kilobyte per sekund.kB_wr/s
: Skriv kilobyte per sekund.Command
: Namnet på processen.
Viktiga överväganden
- Leta efter enkla processer med höga läs-/skrivfrekvenser per sekund. Den här informationen är vägledning för processer med I/O mer än att identifiera problem.
Dricks
Alternativet --human
kan användas för att visa tal i ett läsbart format för människor (d.v.s. KB, MB och GB).
PS
Slutligen ps
visar kommandot systemprocesser och kan sorteras efter CPU eller minne.
Så här sorterar du efter %CPU
och hämtar de 10 främsta processerna:
ps aux --sort=-%cpu | head -10
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
Så här sorterar du efter %MEM
och hämtar de 10 främsta processerna:
ps aux --sort=-%mem| head -10
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
Konsolidera rapporter
Följande Bash-skript kan samla in all information i en enda körning och lägga till utdata i en fil för framtida referens:
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
Om du vill köra skapar du en fil med föregående innehåll, lägger till execute
behörigheter genom att köra chmod +x gather.sh
och kör sedan med sudo ./gather.sh
.
Det här skriptet sparar utdata från kommandona i en fil som finns i samma katalog där skriptet anropades.
Dessutom kan alla kommandon i Bash-blockkoderna som beskrivs i det här dokumentet köras via Azure CLI med hjälp av run-command
tillägget och parsa utdata för jq
att få utdata som liknar att köra kommandona lokalt.
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'
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.