Was sehe ich unter Linux unter htop?

622
AdamJeffers

Ich bin mir nicht sicher, ob dies der richtige Ort für diese Frage ist, aber ich werde sie trotzdem fragen und sehen, wo sie landet!

Ich habe einen Knotenprozess auf Centos und wenn ich laufe htop, sehe ich eine ganze Reihe von Prozessen, die miteinander verwandt aussehen, aber ich weiß nicht wie und ich hoffe, jemand kann mir das erklären: - /

Schauen Sie sich diesen Screenshot an ....

Was sehe ich unter Linux unter htop?

Ich habe nur einen "Echtzeit-Event-Manager" -Prozess, und trotzdem sehe ich mehrere. Ich verstehe, dass dies eine Darstellung der zugrundeliegenden Multi-Threading ist, das vor sich geht, aber was ich nicht verstehe, ist, warum die die CPU, MEMund RESWerte alle gleich sind? Was sehe ich eigentlich hier?

Beachten Sie auch die CPU-Auslastungsbalken oben. Ich sehe oft, dass sie auf 90-100% steigen, aber ohne spürbare Verlangsamung ... ist dies eine echte Darstellung oder ist es nur die Zusammenfassung der Elemente, die in aufgelistet sind htop?

1
Könnten Sie bitte zur Verdeutlichung die Spalte "PPID" aktivieren und das Bild aktualisieren? Attie vor 5 Jahren 0
Siehe [diese Antwort] (https://unix.stackexchange.com/a/10403/108618). Kamil Maciorowski vor 5 Jahren 0
@Attie ... gib mir sicher 10 Minuten in einer Besprechung! AdamJeffers vor 5 Jahren 1

1 Antwort auf die Frage

1
Attie

Ich habe nur einen "Echtzeit-Event-Manager" -Prozess, und trotzdem sehe ich mehrere.

Linux, Threads werden als LWPs (Light-Weight-Prozesse) implementiert, was bedeutet, dass Thread-IDs und Prozess-IDs tatsächlich aus demselben Pool zugewiesen werden. In dieser Antwort finden Sie gute Informationen: Unterschied zwischen PID und TID .

Sie können die verschachtelte / Strukturansicht umschalten, indem Sie drücken F5.

Außerdem können Sie User-Space-Threads anzeigen / ausblenden, indem Sie Shift+ drücken Hoder über das Setup-Menü -F2

htop-setup - Thread-Sichtbarkeit

Es ist auch vorteilhaft, die Option " Benutzerdefinierte Threadnamen anzeigen " zu aktivieren .

Diese " Prozesse ", die Sie sehen, sind wahrscheinlich " Threads " - dies wäre in der Baumansicht klarer oder mit aktivierter Option " Threads in einer anderen Farbe anzeigen ".


Die CPU-Auslastung wird oben angezeigt. Ich sehe oft, dass sie auf 90-100% steigen, aber keine spürbare Verlangsamung

In der * nix-Welt bedeutet 100% " 100% eines Kerns " ... es bedeutet nicht " 100% aller verfügbaren Verarbeitungszeiten " wie unter Windows.

Außerdem ist " keine spürbare Verlangsamung " ein sehr interessanter und subjektiver Punkt.

Abhängig von der Vorauswahl, dem Scheduler und den Prioritäten des Kernels kann das System optimiert und optimiert werden für:

  • " Echtzeit " - Versuch der " weichen Echtzeit " -Zeitplanung ... (Hinweis: Linux ist kein Echtzeit-Kernel)
  • " interaktiv " - wird Prozesse leichter unterbrechen (unterbrechen), um den Anschein eines reaktionsfähigeren Systems zu geben
  • " batch " - hält die Unterbrechung in dem Versuch an, einen großen Job effizienter zu erledigen, auf Kosten des Wartens des Benutzers.

Die meisten benutzerseitigen Systeme optimieren heutzutage die interaktive Planung, ebenso wie immer mehr Server.

Außerdem habe ich beobachtet, dass " größere " / " bessere " Prozessoren (z. B. i7 / Xeon) unter hoher Last eine viel bessere Reaktionsfähigkeit bieten als " kleinere " Prozessoren (z. B. Atom / i3) ... Ich kann das nicht vollständig erklären. aber es könnte an der Anzahl der Threads, der Cache-Größe usw. liegen.

Wenn Sie sich auf dem Einstellungsbildschirm befinden, würde ich auch "Benutzerdefinierte Threadnamen anzeigen" auswählen. Dann wird die Auflistung tatsächlich nützlich. (Threads können mit Shift + H umgeschaltet werden.) grawity vor 5 Jahren 1
Danke für die ausführliche Antwort! Wirklich geholfen. Durch Drücken von "F5" wird die Situation beleuchtet. Gibt es eine Idee, warum jeder untergeordnete Thread die gleiche Menge an "Mem" und "CPU"% wie der übergeordnete Prozess verwendet? Das kann doch nicht richtig sein. AdamJeffers vor 5 Jahren 0
Threads werden im übergeordneten Prozess gruppiert und teilen sich alle den gleichen Adressraum. Daher ist die Speichernutzung für alle Threads eines Prozesses gleich. Die CPU-Auslastung wird korrekt pro Thread gemeldet (in Ihrem Beispiel verwendet 15838 47,8%, während die anderen 0% verwenden). Attie vor 5 Jahren 1