Wenn top hohe Lasten anzeigt und Sie nicht wissen, ob der Prozess, der es verursacht, Prozessorzeit benötigt oder Netzwerk-E / A (nicht lokale E / A) ausführt, wie können Sie das herausfinden?
Auf unserem Server sehe ich hohe Werte für die Last, aber in Kombination mit 60% -70% Leerlauf und etwa 25% Benutzer. Ich würde gerne wissen, wie man solche Werte interpretiert, aber im Internet habe ich fast immer gelesen, dass Sie iostat verwenden können, um zu sehen, ob der Prozess Ihre Festplatten zerstört. Aber ich weiß schon sicher, dass das nicht der Fall ist. Der betreffende Prozess hat auch keine Probleme, seine Arbeit zu erledigen, aber die Last ist immer noch hoch.
Gibt es also eine Möglichkeit herauszufinden, welcher Teil durch das Warten im Netzwerk und welcher Teil durch die reale Prozessorzeit verursacht wird? Und was bedeutet "Leerlauf" oben?
Zur Verdeutlichung: Mit load meine ich die 3 Zahlen, die die durchschnittlichen Prozesse in der Warteschlange pro Kern angeben. Es gibt 8 Kerne auf dieser Maschine und die Anzahl steigt auf 25, was einer Last von 2,5 pro Kern entspricht.
quelle
uptime
Ausgabe)?htop
zum Einblicken in Prozesse. Insbesondere können Sie damit einen Prozess auswählen und dann mit deml
Befehl alle geöffneten Dateien anzeigen, indem Sie Geräte und dergleichenlsof
einschließenIPv4
undIPv6
streamen. Wenn Siestrace
auf Ihrer Box installiert haben , können Sie auch Systemaufrufe und Signal-Debugging durchführen. Nicht gerade eine Antwort, aber ein anderes Werkzeug, das ich für das in Betracht ziehen würde, was Sie untersuchen möchten.Antworten:
Netzwerk-E / A werden in der Linux-iowait-Metrik nicht berücksichtigt, es sei denn, sie sind Teil einer NFS-Transaktion. In diesem Fall wird sie als Festplatten-E / A betrachtet.
Außerhalb einer hypothetischen NFS-Wartezeit wird kein Teil der durchschnittlichen Last durch das Warten im Netzwerk beansprucht.
Dies bedeutet, wie viel Prozent der Zeit die CPU nicht in einem anderen der aufgelisteten Zustände ist (Benutzer, System, nett, iowait, Hardware-Interrupts, Software-Interrupts, gestohlen). Dies schließt Netzwerkwartezeiten ein. Im Leerlauf macht die CPU im Wesentlichen nichts. Beachten Sie, dass iowait auch im Leerlauf ist, da eine CPU auch nichts tut.
quelle