Erfassen von Leistungsmetriken für eine Linux-VM
Gilt für: ✔️ Linux-VMs
In diesem Artikel wird beschrieben, wie Sie Leistungsmetriken von einem virtuellen Linux-Computer (VM) in Microsoft Azure mithilfe der Sysstat-Hilfsprogramme (Leistungsüberwachungstools) abrufen. Es enthält Beispiele für die Verwendung dieser Hilfsprogramme und das Lesen ihrer Ausgaben.
Für das Sammeln von Leistungsindikatoren unter Linux stehen mehrere Befehle zur Verfügung. Befehle wie vmstat
und uptime
stellen wesentliche Systemmetriken bereit, z. B. CPU-Auslastung, Systemspeicher und Systemlast. Die meisten dieser Befehle sind standardmäßig vorinstalliert, während andere über die Standardrepositorys problemlos darauf zugreifen können.
Basierend auf dem Typ der Metriken können diese Befehle in:
Installieren von Sysstat-Dienstprogrammen für Linux
Sie können die Sysstat-Hilfsprogramme auf einer Linux-VM mit einem Bash-Befehl oder dem Feature "Ausführen von Befehlen" über die Azure CLI installieren. Wenn Sie die in diesem Artikel bereitgestellten Azure CLI-Befehle verwenden, stellen Sie sicher, dass die folgenden beiden Umgebungsvariablen festgelegt sind. Sie müssen den Ressourcengruppennamen und den VM-Namen durch die tatsächlichen Werte ersetzen.
export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"
Notiz
Einige der folgenden Befehle erfordern Stammberechtigungen.
Verwenden Sie den folgenden Befehl, um das sysstat
Paket auf einer Linux-VM zu installieren:
Ubuntu:
Red Hat:
SUSE:
CPU
mpstat
Der mpstat
Befehl ist Teil des sysstat
Pakets. Es zeigt die CPU-Auslastung und den Mittelwert jeder CPU an, die bei der Identifizierung der CPU-Auslastung hilfreich ist. Der mpstat
Befehl bietet eine Übersicht über die CPU-Auslastung der verfügbaren CPUs und hilft dabei, den Nutzungsausgleich zu identifizieren und zu ermitteln, ob eine einzelne CPU überlastet ist.
Hier ist ein Beispiel für die Ausführung mpstat
:
-P
: Gibt den Prozessor an, der Statistiken anzeigt, und dasALL
Argument gibt an, dass Statistiken aller Online-CPUs im System angezeigt werden sollen.1
: Das erste numerische Argument gibt das Intervall (in Sekunden) an, in demmpstat
neue Statistiken aktualisiert und angezeigt werden sollen.2
: Das zweite numerische Argument gibt an, wie oftmpstat
Statistiken angezeigt werden sollen. In diesem Fall werden zwei Statistiken in einem Intervall von einer Sekunde gedruckt.
Sie können das Argument erhöhen, um längere Datensammlungszeiten zu berücksichtigen. Im Allgemeinen sind drei oder fünf Sekunden ausreichend. Bei Systemen mit einer höheren Kernanzahl kann die Reduzierung auf zwei Sekunden dazu beitragen, die Menge der angezeigten Daten zu verwalten.
So lesen Sie die MPSTAT-Ausgabe
Hier ist eine Beispielausgabe von 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
Es gibt mehrere wichtige Punkte zu beachten. Die erste Zeile enthält nützliche Informationen:
- Kernel und Release:
5.14.0-362.8.1.el9_3.x86_64
- Hostname:
alma9
- Datum:
02/21/24
- Architektur:
_x86_64_
- Gesamtanzahl der CPUs (diese Informationen sind nützlich, um die Ausgabe anderer Befehle zu interpretieren):
(8 CPU)
Dann werden die Metriken für die CPUs angezeigt. Hier ist eine Erläuterung der einzelnen Spalten:
Time
: Der Zeitstempel, der angibt, wann die Probe gesammelt wurde.CPU
: Der numerische Bezeichner für die CPU. Der Bezeichnerall
stellt einen Mittelwert für alle CPUs dar.%usr
: Der Prozentsatz der CPU-Auslastung durch Benutzerraumprozesse, in der Regel Benutzeranwendungen.%nice
: Der Prozentsatz der CPU-Auslastung durch Benutzerraumprozesse mit einem schönen Wert (Priorität).%sys
: Der Prozentsatz der CPU-Auslastung durch Kernelraumprozesse.%iowait
: Der Prozentsatz der CPU-Leerlaufzeit, die auf ausstehende E/A-Vorgänge wartet.%irq
: Der Prozentsatz der CPU-Zeit, die für die Wartung von Hardwareunterbrechungen aufgewendet wurde.%soft
: Der Prozentsatz der CPU-Zeit, die die Wartungssoftware unterbrochen hat.%steal
: Der Prozentsatz der CPU-Zeit, die ein virtueller Computer für andere VMs aufgewendet hat (gilt nicht für Azure aufgrund mangelnder CPU-Überteilung).%guest
: Der Prozentsatz der CPU-Zeit, die eine virtuelle CPU für die Bereitstellung von VMs aufgewendet hat (gilt nicht für Azure; relevant nur für Bare-Metal-Systeme, auf denen VMs ausgeführt werden).%gnice
: Der Prozentsatz der CPU-Zeit, die eine virtuelle CPU mit einem schönen Wert für die Bereitstellung von VMs aufgewendet hat (gilt nicht für Azure; nur relevant für Bare-Metal-Systeme, auf denen VMs ausgeführt werden).%idle
: Der Prozentsatz der CPU-Zeit, die im Leerlauf war und nicht auf E/A-Anforderungen wartet.
Wichtige Aspekte
Wichtige Überlegungen bei der Überprüfung der Ausgabe von mpstat
:
- Stellen Sie sicher, dass alle CPUs ordnungsgemäß geladen sind und nicht eine einzelne CPU die gesamte Auslastung erfüllt. Diese Informationen können auf eine Singlethread-Anwendung hinweisen.
- Suchen Sie nach einem gesunden Gleichgewicht zwischen
%usr
und%sys
, da das Gegenteil auf mehr Zeit für die tatsächliche Workload als die Bereitstellung von Kernelprozessen hinweist. - Suchen Sie nach
%iowait
Prozentsätzen, da hohe Werte auf ein System hinweisen können, das ständig auf E/A-Anforderungen wartet. - Hohe
%soft
Nutzung kann auf hohen Netzwerkdatenverkehr hinweisen.
vmstat
Das vmstat
Hilfsprogramm ist in den meisten Linux-Distributionen weit verbreitet. Es bietet eine allgemeine Übersicht über die CPU-, Arbeitsspeicher- und Datenträger-E/A-Auslastung in einem einzigen Bereich.
Hier ist ein Beispiel für die Ausführung vmstat
:
-w
: Verwenden Sie den breiten Druck, um konsistente Spalten beizubehalten.1
: Das erste numerische Argument gibt das Intervall in Sekunden zwischen jedem Bericht an. In diesem Fall gibt vmstat alle eine Sekunde einen Bericht aus.5
: Das zweite numerische Argument gibt die Anzahl der Berichte an, die vmstat generieren soll. Mit5
der hier angegebenen Angabe generiert vmstat insgesamt fünf Berichte.
So lesen Sie die vmstat-Ausgabe
Hier ist eine Beispielausgabe von 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
Die Ausgabe wird in die folgenden sechs Gruppen unterteilt. Die Ausgabe zeigt die Gesamtstatistik für das gesamte System (d. a. alle CPUs und Blockgeräte aggregiert).
procs
: Statistiken für Prozesse.memory
: Statistiken für den Systemspeicher.swap
: Statistiken für Tausch.io
: Statistiken für Datenträger-E/A.system
: Statistiken für Kontextschalter und Unterbrechungen.cpu
: Statistiken für die CPU-Auslastung.
Procs
Der Abschnitt "Procs " weist zwei Spalten auf:
r
: Die Anzahl der ausgeführten Prozesse in der Ausführungswarteschlange.b
: Die Anzahl der blockierten Prozesse, die auf E/A warten.
Dieser Abschnitt zeigt sofort, ob es einen Engpass im System gibt. Hohe Zahlen in beiden Spalten deuten darauf hin, dass Prozesse in der Warteschlange stehen und auf Ressourcen warten.
Die r
Spalte gibt die Anzahl der Prozesse an, die auf die Ausführung der CPU-Zeit warten. Eine einfache Möglichkeit, diese Zahl zu interpretieren, ist wie folgt: Wenn die Anzahl der Prozesse in der r
Warteschlange höher ist als die Gesamtanzahl der CPUs, kann daraus abgeleitet werden, dass die CPU des Systems zu stark geladen ist, um cpu-Zeit für alle Prozesse zuzuweisen, die auf die Ausführung warten.
Die b
Spalte gibt die Anzahl der Prozesse an, die auf die Ausführung warten und von E/A-Anforderungen blockiert werden. Eine hohe Zahl in dieser Spalte würde auf ein System hinweisen, das hohe E/A-Vorgänge hat, und Prozesse können aufgrund anderer Prozesse, die auf den Abschluss von E/A-Anforderungen warten, nicht ausgeführt werden. Dies kann auch auf eine hohe Datenträgerlatenz hinweisen.
memory
Der Speicherabschnitt hat vier Spalten. Die Werte werden in Byte angezeigt. Dieser Abschnitt enthält eine allgemeine Übersicht über die Speicherauslastung.
swpd
: Die Menge des verwendeten Auslagerungsspeichers.free
: Die Menge des freien Arbeitsspeichers.buff
: Die Für Puffer verwendete Arbeitsspeichermenge.cache
: Die Für den Cache verwendete Arbeitsspeichermenge.
swap
Der Tauschabschnitt hat zwei Spalten:
si
: Die Menge des speichertauschten Speichers (vom Systemspeicher in den Austausch verschoben) pro Sekunde.so
: Die Menge des ausgelagerten Speichers (vom Austausch in den Systemspeicher verschoben) pro Sekunde.
Wenn ein hoher si
Wert beobachtet wird, kann es ein System darstellen, das nicht mehr im Systemspeicher vorhanden ist, und das Verschieben von Seiten in den Austausch (Swapping).
io
Der Io-Abschnitt enthält zwei Spalten. Diese Werte befinden sich in Blöcken pro Sekunde.
bi
: Die Anzahl der von einem Blockgerät empfangenen Blöcke (liest Blöcke pro Sekunde) pro Sekunde.bo
: Die Anzahl der an ein Blockgerät gesendeten Blöcke (Schreibvorgänge pro Sekunde) pro Sekunde.
system
Der Systemabschnitt weist zwei Spalten auf:
in
: Die Anzahl der Unterbrechungen pro Sekunde.cs
: Die Anzahl der Kontextoptionen pro Sekunde.
Eine hohe Anzahl von Unterbrechungen pro Sekunde kann auf ein System hinweisen, das mit Hardwaregeräten beschäftigt ist (z. B. Netzwerkvorgänge).
Eine hohe Anzahl von Kontextoptionen kann auf ein beschäftigtes System mit vielen kurzen Prozessen hinweisen. Hier gibt es keine gute oder schlechte Zahl.
cpu
Der cpu
Abschnitt enthält fünf Spalten:
us
: Prozentsatz der Nutzung des Benutzerraums.sy
: Prozentsatz der Systemauslastung (Kernelraum).id
: Auslastungsprozentsatz der CPU-Leerlaufzeit.wa
: Auslastungsprozentsatz der CPU-Leerlaufzeit, die auf Prozesse mit E/A wartet.st
: Auslastungsprozentsatz der CPU-Zeit, die für andere virtuelle CPUs aufgewendet wurde (gilt nicht für Azure).
Die Werte werden in Prozentsätzen dargestellt. Diese Werte entsprechen denen des mpstat
Dienstprogramms und dienen dazu, eine allgemeine Übersicht über die CPU-Auslastung bereitzustellen. Folgen Sie einem Prozess ähnlich mpstat, wenn Sie diese Werte überprüfen.
Betriebszeit
Das uptime
Hilfsprogramm bietet eine umfassende Übersicht über die Systemlast mit den Werten für den Ladedurchschnitt.
So lesen Sie die Uptime-Ausgabe
Hier ist eine Beispielausgabe von uptime
:
16:55:53 up 9 min, 2 users, load average: 9.26, 2.91, 1.18
Dies load average
zeigt drei Zahlen an. Diese Zahlen entsprechen der Systemlast in 1
, 5
und 15
Minutenintervallen.
Um diese Werte zu interpretieren, ist es wichtig, die Anzahl der im System verfügbaren CPUs zu kennen, die aus der vorherigen mpstat
Ausgabe abgerufen wird. Der Wert hängt von der Gesamtanzahl der CPUs ab. Die Verwendung der mpstat
Ausgabe als Beispiel hat das System acht CPUs, und ein Lastdurchschnitt würde 8
bedeuten, dass alle Kerne mit 100 % geladen werden.
Ein Wert würde 4
bedeuten, dass die Hälfte der CPUs bei 100 % geladen werden (oder eine Gesamtlast von 50 % für alle CPUs). In der vorherigen Ausgabe lautet 9.26
der Lastdurchschnitt , was bedeutet, dass die CPU bei ca. 115 % geladen wird.
5m
Mit 1m
den Intervallen können 15m
Sie ermitteln, ob die Last im Laufe der Zeit zunimmt oder verringert wird.
Darüber hinaus kann der nproc
Befehl verwendet werden, um die Anzahl der CPUs abzurufen.
Arbeitsspeicher
Für den Arbeitsspeicher können zwei Befehle Details zur Speicherauslastung abrufen.
free
Der free
Befehl zeigt die Systemspeicherauslastung an.
Hier ist ein Beispiel für die Ausführung free
:
-h
: Diese Option gibt das Ausgabeformat an, das lesbar sein soll. Sie konvertiert die Speichergrößen von Bytes in ein besser lesbares Format (Kilobyte, Megabyte und Gigabyte) und fügt entsprechende Einheitenbeschriftungen (KB, MB und GB) an.
So lesen Sie die kostenlose Ausgabe
Hier ist eine Beispielausgabe von free
:
total used free shared buff/cache available
Mem: 31Gi 19Gi 12Gi 23Mi 87Mi 11Gi
Swap: 23Gi 0B 23Gi
Beobachten Sie aus der Ausgabe den total
Systemspeicher im Vergleich zum available
Speicher, und tauschen Sie den used
Vergleich aus total
. Der verfügbare Arbeitsspeicher berücksichtigt den dem Cache zugeordneten Speicher, der an Benutzeranwendungen zurückgegeben werden kann. Einige Swap-Verwendung ist in modernen Kerneln normal, da einige selten verwendete Speicherseiten verschoben werden können, um zu tauschen.
Swapon
Der swapon
Befehl zeigt an, wo swap konfiguriert ist und welche Prioritäten die Swap-Geräte oder Dateien haben.
Hier ist ein Beispiel für die Ausführung swapon
:
Hier ist eine Beispielausgabe von swapon
:
Filename Type Size Used Priority
/dev/zram0 partition 16G 0B 100
/mnt/swapfile file 8G 0B -2
Diese Informationen sind wichtig, um zu überprüfen, ob der Tausch an einem nichtidealen Speicherort konfiguriert ist, z. B. auf einem Daten- oder Betriebssystemdatenträger. Im Azure-Referenzframe sollte swap auf dem kurzlebigen Laufwerk konfiguriert werden, da er die beste Leistung bietet.
Wichtige Aspekte
- Denken Sie daran, dass arbeitsspeicher eine endliche Ressource ist. Sobald beide Systemspeicher (RAM) und Swaps erschöpft sind, wird der Out Of Memory Killer (OOM Killer) die Prozesse töten.
- Stellen Sie sicher, dass der Swap nicht auf einem Datenträger oder Betriebssystemdatenträger konfiguriert ist, da dies aufgrund von Latenzunterschieden Zu Problemen mit E/A führen kann. Swap sollte auf dem kurzlebigen Laufwerk konfiguriert werden.
- Beachten Sie außerdem, dass in der
free -h
Ausgabe häufig freie Werte nahe Null angezeigt werden. Dieses Verhalten ist auf den Seitencache zurückzuführen; der Kernel gibt diese Seiten nach Bedarf frei.
E/A
Datenträger-E/A ist einer der Bereiche, in denen Azure am meisten leidet, wenn sie gedrosselt werden, da Latenzen auf Datenträgern erreicht 100ms+
werden können. Die folgenden Befehle können ihnen dabei helfen, diese Szenarien zu identifizieren.
iostat
Das iostat
Hilfsprogramm ist Teil des sysstat
Pakets. Es zeigt die Nutzungsstatistiken für jedes Blockgerät an und hilft bei der Identifizierung von Block-bezogenen Leistungsproblemen. Es enthält Details zu Metriken wie Durchsatz, Latenz und Warteschlangengröße. Diese Metriken helfen zu verstehen, ob Datenträger-E/A zu einem grenzwertigen Faktor wird.
Hier ist ein Beispiel für die Ausführung iostat
:
-d
: Nutzungsbericht für jedes Gerät.-x
: Erweiterte Statistiken.-t
: Zeigt den Zeitstempel für jeden Bericht an.-m
: Zeigt in MB/s an.1
: Das erste numerische Argument gibt an, wie oft die Anzeige in Sekunden aktualisiert werden soll.2
: Das zweite numerische Argument gibt an, wie oft die Daten aktualisiert werden.
So lesen Sie die Iostat-Ausgabe
Hier ist eine Beispielausgabe von 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
Die Ausgabe enthält mehrere Spalten, die nicht wichtig sind (zusätzliche Spalten aufgrund der -x
Option). Einige der wichtigen sind:
r/s
: Lesevorgänge pro Sekunde (IOPS).rMB/s
: Megabyte pro Sekunde lesen.r_await
: Leselatenz in Millisekunden.rareq-sz
: Durchschnittliche Leseanforderungsgröße in Kilobyte.w/s
: Schreibvorgänge pro Sekunde (IOPS).wMB/s
: Schreiben Sie Megabyte pro Sekunde.w_await
: Schreiblatenz in Millisekunden.wareq-size
: Durchschnittliche Schreibanforderungsgröße in Kilobyte.aqu-sz
: Durchschnittliche Warteschlangengröße.
Wichtige Aspekte
r/s
Suchen Sie nach ,w/s
(IOPS),rMB/s
undwMB/s
überprüfen Sie, ob diese Werte innerhalb der Grenzwerte des angegebenen Datenträgers liegen. Wenn die Werte nahe oder höher als die Grenzwerte liegen, wird der Datenträger gedrosselt, was zu hoher Latenz führt. Diese Informationen können auch mit der%iowait
Metrik bestätigt werden.mpstat
- Die Latenz ist eine hervorragende Metrik, um zu überprüfen, ob der Datenträger wie erwartet ausgeführt wird. Normalerweise ist weniger als
9ms
die erwartete Latenz für PremiumSSD. Andere Angebote haben unterschiedliche Latenzziele. - Die Warteschlangengröße ist ein hervorragender Indikator für die Sättigung. Normalerweise werden Anforderungen in nahezu Echtzeit bereitgestellt, und die Zahl bleibt in der Nähe eines (da die Warteschlange nie wächst). Eine höhere Zahl könnte auf die Datenträgersättigung hinweisen (d. r. Anforderungen, die anstehen). Für diese Metrik gibt es keine gute oder schlechte Zahl. Das Verständnis, dass eine beliebige Zahl, die höher als eine ist, bedeutet, dass Anforderungen in die Warteschlange aufgenommen werden, hilft zu ermitteln, ob die Datenträgersättigung vorhanden ist.
lsblk
Das lsblk
Hilfsprogramm zeigt die an das System angeschlossenen Blockgeräte an. Sie bietet zwar keine Leistungsmetriken, bietet aber einen schnellen Überblick darüber, wie diese Geräte konfiguriert sind und welche Bereitstellungspunkte verwendet werden.
Hier ist ein Beispiel für die Ausführung lsblk
:
So lesen Sie die lsblk-Ausgabe
Hier ist eine Beispielausgabe von 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]
Wichtige Aspekte
- Suchen Sie, wo die Geräte montiert sind.
- Stellen Sie sicher, dass der Tausch nicht innerhalb eines Datenträgers oder Betriebssystemdatenträgers konfiguriert ist, falls aktiviert.
- Eine einfache Möglichkeit, ein Blockgerät mit einer LUN in Azure zu korrelieren, wird ausgeführt
ls -lr /dev/disk/azure
.
Prozess
Das Sammeln von Details pro Prozess hilft ihnen zu verstehen, woher die Systemlast kommt. Das Wichtigste Dienstprogramm zum Sammeln von Prozessstatistiken ist pidstat
, da es Details zu CPU- und Arbeitsspeicher- und E/A-Statistiken für jeden Prozess enthält. Schließlich vervollständigen die Metriken durch eine einfache ps
Sortierung des Prozesses nach der cpu- und arbeitsspeichermäßigen Auslastung.
Notiz
Diese Befehle erfordern Stammberechtigungen, mit denen Details aller ausgeführten sudo
Prozesse angezeigt werden, nicht nur die des aktuellen Benutzers.
pidstat
Das pidstat
Hilfsprogramm ist auch Teil des sysstat
Pakets. Es ist wie mpstat
oder iostat darin, dass metriken für einen bestimmten Zeitraum angezeigt werden. Zeigt standardmäßig pidstat
nur Metriken für Prozesse mit Aktivität an.
Die Argumente für pidstat
diese Argumente sind identisch mit anderen sysstat
Hilfsprogrammen:
1
: Das erste numerische Argument gibt an, wie oft die Anzeige in Sekunden aktualisiert werden soll.2
: Das zweite numerische Argument gibt an, wie oft die Daten aktualisiert werden.
Notiz
Die Ausgabe kann erheblich wachsen, wenn es viele Prozesse mit Aktivität gibt.
Cpu-Statistik verarbeiten
Führen Sie zum Sammeln von CPU-Statistiken pidstat
ohne Optionen die folgenden Schritte aus:
So lesen Sie die CPU-Statistikausgabe
Hier ist eine Beispielausgabe von 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
Der Befehl zeigt die Verwendung von %usr
, , %system
( %guest
nicht anwendbar für Azure) %wait
und die Gesamtnutzung %CPU
für jeden Prozess an.
Wichtige Aspekte
- Suchen Sie nach Prozessen mit hohen
%wait
(iowait)-Prozentsätzen, da sie auf E/A blockierte Prozesse hinweisen können, die auch auf die Datenträgersättigung hindeuten. - Stellen Sie sicher, dass kein einzelner Prozess 100 % der CPU verbraucht, da er auf eine Singlethread-Anwendung hinweisen kann.
Prozessspeicherstatistiken
Verwenden Sie die -r
Folgende Option, um Prozessspeicherstatistiken zu erfassen:
So lesen Sie die Ausgabe der Speicherstatistik
Hier ist eine Beispielausgabe von 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
Die gesammelten Metriken sind:
minflt/s
: Kleinere Fehler pro Sekunde. Diese Metrik gibt die Anzahl der Seiten an, die aus dem Systemspeicher (RAM) geladen wurden.mjflt/s
: Hauptfehler pro Sekunde. Diese Metrik gibt die Anzahl der Seiten an, die vom Datenträger (SWAP) geladen wurden.VSZ
: Virtueller Speicher, der in Bytes verwendet wird.RSS
: Verwendeter Speicher (tatsächlich zugewiesener Speicher) in Byte.%MEM
: Der Prozentsatz des gesamten verwendeten Arbeitsspeichers.Command
: Der Name des Prozesses.
Wichtige Aspekte
- Suchen Sie nach großen Fehlern pro Sekunde, da dieser Wert auf einen Prozess hinweisen würde, der Seiten aus oder von einem Datenträger austauscht. Dieses Verhalten kann auf Diebrauchung des Arbeitsspeichers hinweisen und zu
OOM
Ereignissen oder Leistungsbeeinträchtigungen aufgrund eines langsameren Swappings führen. - Stellen Sie sicher, dass ein einzelner Prozess 100 % des verfügbaren Arbeitsspeichers nicht belegt. Dieses Verhalten könnte auf einen Speicherverlust hinweisen.
Tipp
Die --human
Option kann verwendet werden, um Zahlen in einem lesbaren Format (d. a. KB, MB und GB) anzuzeigen.
Prozess-E/A-Statistiken
Verwenden Sie die -d
Option, um Prozess-E/A-Statistiken zu sammeln:
Hier ist eine Beispielausgabe von 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
Die gesammelten Metriken sind:
kB_rd/s
: Kilobyte pro Sekunde lesen.kB_wr/s
: Schreiben Sie Kilobyte pro Sekunde.Command
: Der Name des Prozesses.
Wichtige Aspekte
- Suchen Sie nach einzelnen Prozessen mit hohen Lese-/Schreibraten pro Sekunde. Diese Informationen sind Anleitungen für Prozesse mit E/A mehr als bei der Identifizierung von Problemen.
Tipp
Die --human
Option kann verwendet werden, um Zahlen in einem lesbaren Format (d. a. KB, MB und GB) anzuzeigen.
PS
Schließlich zeigt der ps
Befehl Systemprozesse an und kann nach CPU oder Arbeitsspeicher sortiert werden.
So sortieren %CPU
Und abrufen Sie die 10 wichtigsten Prozesse:
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
So sortieren %MEM
Und abrufen Sie die 10 wichtigsten Prozesse:
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
Konsolidieren von Berichten
Das folgende Bash-Skript kann alle Details in einer einzelnen Ausführung erfassen und die Ausgabe an eine Datei anfügen, um eine zukünftige Referenz zu erhalten:
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
Erstellen Sie zum Ausführen eine Datei mit dem vorherigen Inhalt, fügen Sie Berechtigungen hinzu, indem Sie execute
ausgeführt chmod +x gather.sh
werden, und führen Sie dann mit sudo ./gather.sh
.
Dieses Skript speichert die Ausgabe der Befehle in einer Datei im selben Verzeichnis, in dem das Skript aufgerufen wurde.
Darüber hinaus können alle Befehle in den in diesem Dokument behandelten Bash-Blockcodes über die Azure CLI ausgeführt werden, indem die run-command
Erweiterung verwendet und die Ausgabe jq
analysiert wird, um Ausgaben abzurufen, die dem lokalen Ausführen der Befehle ähneln.
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'
Informationen zum Haftungsausschluss von Drittanbietern
Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.