it-swarm.com.de

Linux "top" Befehl: Was sind wir, sy, ni, id, wa, hi, si und st (für die CPU-Auslastung)?

Wenn ich top unter Linux ausgeben, erhalte ich ein ähnliches Ergebnis:

Screenshot of top

In einer der Zeilen werden Informationen zur CPU-Auslastung wie folgt dargestellt:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Obwohl ich die Definitionen der einzelnen Aufgaben kenne (weit unten), verstehe ich nicht genau, was diese Aufgaben bedeuten.

  • hi - Was bedeutet die Wartung von Hardware-Interrupts?
  • si - Was bedeutet die Wartung von Software-Interrupts?
  • st - Sie sagen, es ist die "CPU-Zeit in unfreiwilligem Warten durch die virtuelle CPU, während der Hypervisor einen anderen Prozessor (oder)% CPU-Zeit wartet, die von einer virtuellen Maschine gestohlen wurde".

Aber was bedeutet das eigentlich? Kann jemand klarer sein?

Ich habe alle us, sy, ni usw. aufgelistet, weil es anderen helfen könnte, nach denselben zu suchen. Diese Informationen befinden sich nicht in den Manpages.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user Nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
206
its_me

hi ist die Zeit, die für die Verarbeitung von Hardware-Interrupts aufgewendet wird. Hardware-Interrupts werden von Hardwaregeräten (Netzwerkkarten, Tastaturcontroller, externer Timer, Hardware-Sensoren usw.) generiert, wenn sie der CPU etwas signalisieren müssen (z. B. Daten sind eingetroffen).

Da diese sehr häufig auftreten können und im Wesentlichen die aktuelle CPU blockieren, während sie ausgeführt werden, werden Kernel-Hardware-Interrupt-Handler so schnell und einfach wie möglich geschrieben.

Wenn eine lange oder komplexe Verarbeitung erforderlich ist, werden diese Aufgaben mithilfe eines Mechanismusaufrufs softirqs verschoben. Diese werden unabhängig voneinander geplant, können auf jeder CPU ausgeführt werden und können sogar gleichzeitig ausgeführt werden (nichts davon gilt für Hardware-Interrupt-Handler).

Der Teil über harte IRQs, die die aktuelle CPU blockieren, und der Teil über softirqs, die überall ausgeführt werden können, sind nicht genau korrekt, es kann Einschränkungen geben und einige harte IRQs können andere unterbrechen.

Beispielsweise könnte ein Hardware-Interrupt "Daten empfangen" von einer Netzwerkkarte einfach die Information "Karte ethX muss gewartet werden" irgendwo speichern und ein softirq planen. Das softirq ist das, was das eigentliche Paketrouting auslöst.

si repräsentiert die Zeit, die in diesen softirqs verbracht wird.

Eine gute Lektüre über den softirq -Mechanismus (auch mit ein bisschen Geschichte) ist Matthew Wilcoxs Ich mache es später: Softirqs, Tasklets, untere Hälften, Task-Warteschlangen, Arbeitswarteschlangen und Timer = (PDF, 64 KB).

st, "Zeit stehlen", ist nur in virtualisierten Umgebungen relevant. Es stellt die Zeit dar, zu der die reale CPU für die aktuelle virtuelle Maschine nicht verfügbar war - sie wurde von diesem VM vom Hypervisor (entweder zum Ausführen einer anderen VM oder für ihre eigenen Anforderungen) "gestohlen".

Das Dokument CPU-Zeitabrechnung von IBM enthält weitere Informationen zur Diebstahlzeit und zur CPU-Abrechnung in virtualisierten Umgebungen. (Es richtet sich an Hardware vom Typ zSeries, aber die allgemeine Idee ist für die meisten Plattformen dieselbe.)

96
Mat
  • us - Zeit, die im Benutzerraum verbracht wird
  • sy - Zeit im Kernelraum
  • ni - Zeitaufwand für die Ausführung von Niced User-Prozessen (benutzerdefinierte Priorität)
  • id - Zeit, die im Leerlauf verbracht wird
  • wa - Wartezeit auf IO Peripheriegeräte (z. B. Festplatte)
  • hi - Zeitaufwand für die Bearbeitung von Hardware-Interrupt-Routinen. (Wenn eine Peripherieeinheit die Aufmerksamkeit der CPU auf sich ziehen möchte, zieht sie buchstäblich eine Linie, um der CPU zu signalisieren, sie zu warten.)
  • si - Zeitaufwand für die Bearbeitung von Software-Interrupt-Routinen. (Ein Stück Code, ruft eine Interrupt-Routine auf ...)
  • st - Zeit, die für das unfreiwillige Warten der virtuellen CPU aufgewendet wird, während der Hypervisor einen anderen Prozessor wartet (von einer virtuellen Maschine gestohlen)
20
Simon Rigét

Der "st" -Wert kann einfach mithilfe einer T2.micro EC2-Instanz von AWS erklärt werden.

In der AWS-Dokumentation können Sie lesen, dass Sie nur eine Basisleistung von 10% pro VCPU erhalten. Dies bedeutet, dass bei einem Prozess, der viel CPU-Zeit in Anspruch nimmt, der Wert "st" bei etwa 90 bleibt, da Sie nur 10% der VCPU verwenden dürfen. Die Summe der anderen Werte bleibt bei 10.

Daher verwendet AWS den Hypervisor, um Ihnen nur den Zugriff auf eine bestimmte Menge an Rechenleistung zu ermöglichen. Dies verlangsamt Sie absichtlich, da Sie nur eine Instanz niedriger Ebene verwenden.

Ich hoffe, das macht die Dinge ein bisschen leichter verständlich.

2
draufunddran