Freigeben über


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:

sudo apt install sysstat -y

Red Hat:

sudo dnf install sysstat -y

SUSE:

sudo zypper install sysstat --non-interactive

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:

mpstat -P ALL 1 2
  • -P: Gibt den Prozessor an, der Statistiken anzeigt, und das ALL 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 dem mpstat neue Statistiken aktualisiert und angezeigt werden sollen.
  • 2: Das zweite numerische Argument gibt an, wie oft mpstat 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 Bezeichner all 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:

vmstat -w 1 5
  • -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. Mit 5 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.

uptime

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, 5und 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.26der Lastdurchschnitt , was bedeutet, dass die CPU bei ca. 115 % geladen wird.

5mMit 1mden 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:

free -h
  • -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:

swapon -s

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:

iostat -dxtm 1 5
  • -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/sSuchen Sie nach , w/s (IOPS), rMB/sund wMB/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:

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:

pidstat 1 2
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) %waitund 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:

pidstat -r 1 2
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:

pidstat -d 1 2

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:

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

So sortieren %MEM Und abrufen Sie die 10 wichtigsten Prozesse:

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

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.shwerden, 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.