warum zeigt das htop meter> 90% an, während die tabelle 0,0% beträgt?

12

Warum zeigen die Fortschrittsanzeigen im oberen Bereich des Bildschirms htopdie CPU-Auslastung konstant über> 90% an, während die Zahlen in der folgenden Tabelle ein nahezu inaktives System mit einer CPU-Auslastung und einer durchschnittlichen Auslastung von 0,0% anzeigen?

teilweise htop screen grab

Matt Wilkie
quelle
1
Ich habe genau das gleiche Problem und bin auch auf einem Dreamhost VPS (Virtual Private Server).
Duality_
BTW, Blick auf mein Beispiel, ist es noch schlimmer: demo.ddesign.si/temp/dh3.png
duality_

Antworten:

6

htopist sich nicht bewusst, dass es in einer virtualisierten Kernel-Umgebung ausgeführt wird ( Dreamhost VPS verwendet die VServer- Technologie). Es zeigt dann die CPU-Auslastung für alle Betriebssysteminstanzen an, die denselben Kernel verwenden, nicht nur Ihren.

Schauen Sie sich die vtopAusgabe an, in der alle Prozesse angezeigt werden, die die CPUs gemeinsam nutzen, nicht nur die in Ihrem Container.

Wenn dies vtopnicht installiert ist und dies wahrscheinlich für eine kommerzielle Lösung erwartet wird, da ein Kunde nicht sehen möchte, welche Prozesse andere Kunden ausführen, gibt es keine Möglichkeit, das Problem in Ihrem Container zu beheben, es sei denn, die Patch- topQuelle muss berechnet werden CPU-Auslastung, anstatt sie aus der Kernel-Statistik zu beziehen.

Dies kann durch Aufsummieren der CPU-Auslastung aller in Ihrem VServer ausgeführten Prozesse geschehen, z.

ps aux | awk '
    {cpu+=$3; ram+=$6} 
    END {printf("cpu: %d%%, RAM: %.2f MiB\n",cpu,ram/1024) }'
jlliagre
quelle
+1 für die Erklärung; topmeldet ähnlich wie htop auf diesem Rechner. Vtop nicht getestet als nicht installiert. Markiere dies als akzeptiert, weil es "warum?" Antwortet, obwohl es nicht das implizite "und was kann dagegen getan werden?"
Anspricht
4

Diese Art von Inkonsistenz weist normalerweise auf eine hohe Prozessorauslastung durch Kernel-Threads hin, die htopstandardmäßig nicht angezeigt werden. Um sie anzuzeigen, htopgehen Sie zu Setup, dann Display optionsund deaktivieren Sie das Kontrollkästchen Hide kernel threads. Dies sollte es Ihnen ermöglichen, die verantwortlichen Threads zu sehen.

Sie können dieses Verhalten auch deaktivieren, indem Sie hide_kernel_threads0 in festlegen ~/.htoprc.

Chris Down
quelle
2
danke Chris. Ich habe das gemacht, aber die Tabellenwerte sind immer noch 0%. Vielleicht ist dies etwas Besonderes für die Ausführung in einer virtuellen Maschine? Der Host ist Virtual Private Server (auf Dreamhost.com).
Matt Wilkie
Für mich ist das die richtigere Antwort. Ich hatte einen Prozess, der viel CPU aus dem Kernel herausforderte und der nicht in den User-Space-Prozessen auftauchte.
Patrick Chu
... mit der Ausnahme, dass die HTop-CPU-Anzeigen die Kernelzeit in Rot und die Benutzerzeit in Grün anzeigen und wir deutlich sehen können, dass fast alles grün ist.
MathematicalOrchid
1

Starten Sie htopmit sudo. Sie benötigen Root-Zugriff, um diese aktiven Threads in der Tabelle anzuzeigen.

HAL 9001
quelle
Ich weiß nicht, wie gut oder nicht dies in normalen virtualisierten Umgebungen funktioniert, wenn es so etwas wie regulär gibt, aber nicht in Dreamhost VPS.
Matt Wilkie