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

195

Unter topLinux erhalte ich ein ähnliches Ergebnis:

Screenshot von oben

In einer der Zeilen sind 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

Ich kenne zwar die Definitionen der einzelnen Aufgaben (siehe unten), verstehe aber nicht, was diese Aufgaben genau bedeuten.

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

Aber was heißt das eigentlich? Kann jemand klarer sein?

Ich aufgelistet alle us, sy, ni, usw, weil sie andere Benutzer für das gleiche helfen könnten. Diese Informationen sind nicht in den Manpages enthalten.

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
da ich bin
quelle

Antworten:

92

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

Da diese sehr häufig auftreten können und die aktuelle CPU während des Betriebs im Wesentlichen blockieren, werden die Interrupt-Handler für die Kernelhardware so schnell und einfach wie möglich geschrieben.

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

Der Teil über harte IRQs, die die aktuelle CPU blockieren, und der Teil über softirqsdie Möglichkeit, überall ausgeführt zu werden, sind nicht genau richtig. 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, die ethX warten muss" irgendwo speichern und einen Zeitplan erstellen softirq. Das softirqwäre die Sache, die das eigentliche Paketrouting auslöst.

sistellt die Zeit dar, die in diesen verbracht wird softirqs.

Eine gute Lektüre über den softirqMechanismus (auch mit ein bisschen Geschichte) ist Matthew Wilcoxs " Ich mache es später": Softirqs, Tasklets, Bottom Halves, Task Queues, Work Queues und Timer (PDF, 64k).

st"Zeit stehlen" ist nur in virtualisierten Umgebungen relevant. Es stellt die Zeit dar, in der die reale CPU für die aktuelle virtuelle Maschine nicht verfügbar war - sie wurde vom Hypervisor von dieser VM "gestohlen" (entweder, um eine andere VM auszuführen oder für ihre eigenen Bedürfnisse).

Das Dokument zur CPU-Zeitabrechnung von IBM enthält weitere Informationen zum Zeitraub 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.)

Matte
quelle
sehr deutlich. Wenn ich also ein neues Soundsystem, ein Headset usw. (egal welche Hardware) anschließe, kommt es auch zu einem Hardware-Interrupt, oder?
its_me
2
Ja, auf diese Weise kann Ihr Soundchipsatz signalisieren, dass "etwas passiert ist". Das Anschließen eines Headsets kann jedoch vollständig vom Soundchip selbst übernommen werden (z. B. das Umleiten der Audioausgabe vom Hauptgerät zu Ihren Kopfhörern), sodass möglicherweise kein Interrupt für die Haupt-CPU generiert wird. Das Eingeben einer Taste auf Ihrer Tastatur führt jedoch zu Interrupts (von Ihrem USB-Hub-Gerät, wenn Sie eine USB-Tastatur haben). Siehe auch cat /proc/interrupts(man man procfor doc. Über diese Datei).
Mat
15
  • us - Zeit im User Space
  • sy - Zeit, die im Kernel-Space verbracht wurde
  • ni - Zeitaufwand für die Ausführung vernetzter Benutzerprozesse (benutzerdefinierte Priorität)
  • id - Zeit, die im Leerlauf verbracht wurde
  • wa - Wartezeit auf IO-Peripheriegeräten (z. B. Festplatte)
  • hi - Zeitaufwand für die Verarbeitung von Hardware-Interrupt-Routinen. (Wann immer ein Peripheriegerät Aufmerksamkeit von der CPU erhalten möchte, zieht es buchstäblich eine Linie, um der CPU zu signalisieren, dass sie diese warten soll.)
  • si - Zeitaufwand für die Verarbeitung von Software-Interrupt-Routinen. (ein Stück Code, ruft eine Interruptroutine auf ...)
  • st - Zeit, die die virtuelle CPU für unfreiwillige Wartezeiten benötigt, während der Hypervisor einen anderen Prozessor bedient (von einer virtuellen Maschine gestohlen)
Simon Rigét
quelle
2

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

In der AWS-Dokumentation können Sie nachlesen, dass Sie nur eine 10-prozentige Basisleistung 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. Es verlangsamt Sie absichtlich, da Sie nur einen Instanztyp mit niedriger Ebene verwenden.

Ich hoffe, das macht die Sache ein bisschen verständlicher.

draufunddran
quelle