Dela via


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, och ALL argumentet anger att statistik för alla online-processorer i systemet ska visas.
  • 1: Det första numeriska argumentet anger intervallet (i sekunder) där mpstat ska uppdateras och visa ny statistik.
  • 2: Det andra numeriska argumentet anger hur många gånger mpstat 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. Identifieraren all 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 mpstatutdata 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. Med 5 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, 5och 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.26belastningsgenomsnittet , vilket innebär att processorn läses in med cirka 115 %.

Intervallen 1m, 5moch 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, och wMB/s, och kontrollera att dessa värden ligger inom gränserna för r/sden 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ån mpstat.
  • 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), %waitoch 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.shoch 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.