Tutoriel Linux

Vmstat unter Linux: RAM-Auslastung, CPU- oder Festplattenauslastung?

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Ein Server wird langsamer, aber Spitze zeigt nicht immer einen zu 100 % blockierten Prozess an. vmstatSie können innerhalb weniger Sekunden erkennen, ob die Aufgaben auf den Prozessor, die Festplatte oder den Arbeitsspeicher warten. Vorausgesetzt natürlich, Sie ziehen aus der ersten Zeile keine voreiligen Schlüsse.

Ich beginne immer mit mehreren Stichproben und vergleiche dann die Zähler mit frei iostat und die Prozesse. Nur so lässt sich echter Speicherdruck von einer überlasteten CPU oder einem nicht ordnungsgemäß reagierenden Speicher unterscheiden.

Tux vergleicht RAM, CPU und I/O, um einen Linux-Server zu diagnostizieren.
Vmstat hilft dabei, zwischen einer CPU-Warteschlange, Speicherauslastung und E/A-Wartezeiten zu unterscheiden.

Führen Sie vmstat auf mehreren Samples aus.

vmstat gehört normalerweise in die Verpackung procps Oder procps-ngBeginnen Sie damit, jede Sekunde einen Messwert abzulesen, insgesamt also sechs Zeilen:

vmstat 1 6

Die erste Zeile fasst die Aktivitäten seit Beginn zusammen. Sie beschreibt die gerade vergangene Aktivität in der zweiten Zeile nicht präzise. Um eine anhaltende Verlangsamung zu diagnostizieren, konzentrieren Sie sich auf das Lesen der folgenden Zeilen. Die Option -w Verbreitert die Spalten, wenn die Werte schwer lesbar werden:

vmstat -w 1 6

Halten Sie ein zweites Terminalfenster geöffnet. Starten Sie den Lesevorgang, reproduzieren Sie die langsame Aktion und notieren Sie sich die Spalten, die sich gleichzeitig ändern. Ein einzelner Ausreißer während eines Speicher- oder Kompilierungsvorgangs ist nicht so aussagekräftig wie eine Warteschlange, die über mehrere Minuten hinweg stark ausgelastet bleibt.

In der Gruppe Versuche, Dies gibt die Anzahl der ausführbaren Prozesse an, die ausgeführt werden oder auf Prozessorzeit warten. Vergleichen Sie diesen Wert mit der Anzahl der logischen Prozessoren:

nproc
Betriebszeit

Wenn R bleibt deutlich über der Anzahl der verfügbaren CPUs und dass uns Oder sy Wenn die Werte hoch sind, fehlt der Maschine wahrscheinlich Rechenzeit. entspricht dem im Benutzermodus ausgeführten Code, während sy misst die Arbeit des Kerns. Ein Wert Ungewöhnlich hohe Werte können durch eine große Anzahl von Systemaufrufen, Interrupts oder Kontextänderungen verursacht werden.

Die Kolumne B Dies umfasst Aufgaben, die in einem nicht unterbrechbaren Schlafzustand feststecken und häufig auf Eingaben oder Ausgaben warten. Wenn B mitfahren waBevor Sie die CPU beschuldigen, sollten Sie den Speicher überprüfen. wa stellt die Zeit dar, in der der Prozessor im Leerlauf ist, während eine Eingabe-/Ausgabeoperation aussteht.

  • Ausweis CPU-Leerlaufzeit;
  • wa : Warten auf Ein-/Ausgang;
  • st : Zeit, die der Hypervisor auf einer virtuellen Maschine benötigt.

Auf einem VPS, st Wiederholte Wiederholungen können auf eine Überlastung des physischen Systems hinweisen. Bei einem physischen Gerät bleibt dieser Wert normalerweise bei Null. Die Anleitung dazu finden Sie hier. Lastdurchschnitt unter Linux Diese Messung ist vollständig, da die Last auch einige blockierte Aufgaben umfasst und nicht auf einen CPU-Prozentsatz beschränkt ist.

Erkennen von echtem Speicherdruck mit der Bedingung „nur wenn“

Die Spalten swpd, frei, polieren Und versteckt Sie bieten eine kompakte Ansicht des Speichers. Sie reichen jedoch nicht aus, um die Speicherauslastung anzuzeigen. Linux nutzt einen Teil des RAM als Cache wieder, und frei In vmstat ersetzt nicht die Spalte verfügbar der Bestellung frei.

frei -h
swapon --show

swpd Zeigt die Menge des verwendeten Swap-Speichers an. Ein Wert ungleich Null beweist nicht, dass das System noch Seiten austauscht. Beachten Sie dies besonders. Wenn Und basierend auf aktuellen Stichproben:

  • Wenn : Daten vom Auslagerungsspeicher in den Arbeitsspeicher gelesen;
  • Also : Daten wurden vom Arbeitsspeicher in den Auslagerungsspeicher verschoben.

Wiederholte Werte in Wenn Oder Also, eine Erinnerung verfügbar Anhaltend niedriger Speicherbedarf und verlängerte Reaktionszeiten deuten stark auf Speichermangel hin. Ein alter, belegter Auslagerungsbereich ohne aktuelle Auslagerungsaktivität hat hingegen keine vergleichbare Bedeutung. Siehe auch: freier und verfügbarer RAM beschreibt die Rolle des Caches, während der Artikel über den unter Linux austauschen erklärt, warum man es nicht reflexartig leeren sollte.

Bestätigen Sie eine Festplattenwartezeit mit bi, bo und iostat.

Im Abschnitt , Bi Und bo Sie stellen die pro Sekunde empfangenen und gesendeten Blöcke dar. Sie zeigen die Gesamtaktivität an, jedoch nicht das verantwortliche Gerät oder dessen Reaktionszeit. B Und wa hoch bleiben, wechseln zu iostat :

Schauen Sie besonders erwarten, die Warteschlange und %util Für jede Festplatte einzeln betrachten. Verlassen Sie sich nicht auf einen einzigen Schwellenwert: Eine NVMe-SSD kann mehrere Operationen parallel verarbeiten, während die Leistung einer Festplatte bei wahlfreiem Zugriff schnell abnimmt. Vergleichen Sie die Werte mit dem üblichen Verhalten des Systems und der aktuellen Auslastung.

Der Artikel über iostat unter Linux Erklärt, wie diese Zähler an das richtige Gerät angeschlossen werden. Falls die Verlangsamungen von Fehlern begleitet werden, überprüfen Sie auch die Kernel-Meldungen:

journalctl -k -b -p warning..alert

Den Prozess vor dem Neustart eines Dienstes abrufen.

ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pcpu | head
ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pmem | head

In STAT Dies entspricht im Allgemeinen ungestörtem Schlaf. Es kann eine Kolumne erklären B Die Prozess-ID (PID) ist hoch, aber beenden Sie den Prozess nicht sofort. Identifizieren Sie zunächst den zugehörigen Dienst, die geöffneten Dateien und die Protokolle:

ps -fp PID
systemctl status service-concerned --no-pager
journalctl -u service-concerne -n ​​​​100 --no-pager

Eine Datenbank kann viel RAM verbrauchen, ohne dass es zu Leckagen kommt, und ein Prozess in einem bestimmten Zustand D Möglicherweise wartet das System auf eine Festplatte oder einen Netzwerkspeicher. Ein Neustart kann das Problem manchmal nur vorübergehend verschleiern, ohne es zu beheben. Prüfen Sie daher Dauer, Auslastung und Fehlermeldungen, bevor Sie weitere Maßnahmen ergreifen.

Entscheidung anhand überlappender Zähler

  • CPU ausgelastet : R bleibt hoch im Vergleich zu nproc, mit uns Oder sy hoch und klein Ausweis
  • Gedächtnisdruck verfügbar Wenn Oder Also Bei mehreren Stichproben tritt eine Rückgabe auf, und die Latenz erhöht sich;
  • Festplatte wartet : B Und wa dann steh auf iostat bestätigt ein langsames Gerät;
  • Virtualisierungsstreit st bleibt trotz mäßiger interner Last auf einer VM sichtbar.

Um nach einer OOM-Killer-Instanz zu suchen, verwenden Sie die Kernel-Protokolle:

journalctl -k -b | grep -Ei 'out of memory|oom-killer|killed process'

Dort vmstat-Handbuchseite beschreibt jedes Feld. Das von iostat Erfassen Sie detaillierte Speichermetriken. Notieren Sie sich Ihre Messwerte vor und während der Verlangsamung: Ohne einen Vergleich im Zeitverlauf bleibt selbst ein hoher Zählerstand schwer zu interpretieren.

sudo apt update && sudo apt upgrade