Szenario: Plötzlich fühlt sich mein Computer träge an. Die Maus bewegt sich, aber das Öffnen der Fenster dauert ewig usw. uptime
Die Last beträgt 7,69 und hebt sich.
Was ist der schnellste Weg, um herauszufinden, welche Prozesse die Ursache für die Belastung sind?
Jetzt sind "top" und ähnliche Tools nicht die Antwort, da sie entweder die CPU- oder die Speichernutzung anzeigen, aber nicht beide gleichzeitig. Was ich brauche, ist der einzelne Befehl, den ich möglicherweise eingeben kann, wenn er passiert - etwas, das alles herausfinden wird
Das System versucht, 8 GB RAM auf die Festplatte zu übertragen, da Prozess X ...
oder
Prozess X sucht auf der gesamten Festplatte
oder
Prozess X verwendet 400% CPU "
Was ich also suche, ist, dass iostat, htop / atop und ähnliche Tools mit einer Ausgabe wie dieser in einem ausgeführt werden:
1235 cp - Disk trashing
87 chrome - Uses 2 GB of RAM
137 nfs_bench - Uses 95% of the network bandwidth
Ich möchte kein Tool, das mir einige Zahlen gibt, die ich analysieren kann, sondern ein Tool, das mir genau sagt, welcher Prozess die aktuelle Last verursacht. Angenommen, der Benutzer vor der Tastatur weiß kaum, wie man "Prozess" schreibt, aber der Benutzer ist schnell überfordert, wenn es um "residente Größe", "virtuellen Speicher" oder "Prozesslebenszyklus" geht.
Mein Argument lautet wie folgt: Ein Benutzer bemerkt ein Problem. Es kann Tausende von Gründen geben ... na ja, fast :-) Der Benutzer möchte die Ursache des Problems wissen.
Die aktuellen Lösungen geben mir viele Zahlen, und ich muss wissen, was diese Zahlen bedeuten. Was ich suche, ist ein Meta-Tool. 99% der Daten sind für das Problem irrelevant. Das Tool sollte also nach Prozessen suchen, die einige Ressourcen beanspruchen, und nur diejenigen auflisten, zusammen mit "Dieser Prozess benötigt viel CPU, dies erzeugt viele IRQs, dieser Prozess weist viel RAM zu (und er wächst immer noch)".
Dies wird eine relativ kurze Liste sein. Es wird für jemanden, der neu in diesem Bereich ist, viel einfacher sein, den Schuldigen aus dieser Liste zu finden, als beispielsweise aus der Ausgabe von, htop
die mir ungefähr 5000 Zahlen gibt, aber erfordert, dass ich selbst Multithread-Prozesse falte (ich habe 50 Zeilen, die VIRT 2750M
aber sagen nur 16 GB RAM - die Maschine sollte sich selbst zu Tode tauschen, aber dies ist natürlich eine Fehlinterpretation der Daten, die schnell passieren kann).
quelle
top
bedeutet)Antworten:
Ich muss über die Antworten lächeln, weil jeder Ihnen gesagt hat, dass Sie Tool X ausführen sollen. Das einzige Problem ist, dass es keine Möglichkeit gibt, irgendetwas zu korrelieren, wenn das, was Sie sehen, zeitweise ist. Ein Tool wie sar kann helfen, wenn Sie es mit einer ausreichend hohen Frequenz ausführen , aber ich würde behaupten, Collectl ist noch besser.
Wie sar führen Sie es als Daemon aus, indem Sie das RPM installieren und ausführen
/etc/init.d/collectl start
.Wenn Sie jetzt etwas Träge sehen,
collectl -p /var/log/collectl/filename --top
werden die Daten wiedergegeben und die wichtigsten Prozesse angezeigt. Sie hätten auch einfach laufencollectl --top
und sie in Echtzeit sehen können. Übrigens - alles, was Sie in Echtzeit tun können, können Sie auch wiedergeben.Was ist mit der CPU-Auslastung, wenn Sie mit Interrupts überlastet werden?
collectl -sC
zeigt nicht nur die-sc
Auslastung einzelner CPUs (oder die Verwendung für die durchschnittliche Auslastung), sondern auch, wie sie ihre Zeit verbringen. Include-j
(-scj
) und Sie sehen die Anzahl der Interrupts / CPU.-J
Wenn Sie Großbuchstaben verwenden , werden die TYPEN der einzelnen Interrupts / CPUs angezeigt.Wenn Sie vmstat wirklich mögen, können Sie natürlich immer gesammelte Daten mit wiedergeben,
--vmstat
und es werden historische Daten im vmstat-Format angezeigt.Es gibt weit mehr Schalter, als ich auflisten kann, aber Sie können sie bei SourceForge überprüfen oder einfach googeln.
quelle
"top" funktioniert ziemlich gut, solange Sie sich die richtigen Zahlen ansehen. Wir werden sehen:
Wenn das System langsam ist, weil die CPU voll ist, werden die Spalten "us" und "sy" in der Zeile "Cpu (s):" angezeigt, die nahezu 100% zusammen liegen.
Wenn es aufgrund des Austauschs langsam ist, zeigt "Mem:" "free" sehr niedrige Werte und "Swap:" "verwendete" hohe Werte.
Wenn es aufgrund von E / A im Allgemeinen langsam ist , gibt "Cpu (s):" "wa" an, dass Zeit für das Warten auf E / A aufgewendet wird.
Wenn Sie nun wissen, dass E / A-Wartezeiten das Problem sind, können Sie mit den Programmen "iotop" ermitteln, welche Prozesse die meisten E / A-Vorgänge erstellen.
quelle
top
, kann dies auch ein Computer. Dies ist nicht Mona Lisas Lächeln, es sind nur einige Zahlen, um "schlechte" zu finden.Aufgrund der Auslastung von 400% gehe ich davon aus, dass Sie einen Quad-Core-Prozessor haben. Ihr Lastdurchschnitt ist fast doppelt so hoch wie die Kapazität und die Hälfte der Prozesse wartet auf die CPU.
Stellen
renice
Sie zuerst Ihre Shell auf 0 oder -10, um ein reaktionsfähigeres System zu erhalten, und verwenden Sie dannhtop
, um die fehlerhaften Prozesse zu finden, und folgen Sie diesen mitstrace
einem bestimmten Prozess. Andere Werkzeuge, die nützlich sein könnten, sind:vmsat
sar
iostat
pmap
quelle
Eine träge Maus kann auch auf eine zu hohe Interruptlast zurückzuführen sein oder darauf, dass USB-Controller sehr beschäftigt sind (ich nehme an, es handelt sich um eine USB-Maus).
quelle
vmstat könnte Ihnen allgemein helfen. Ein Anwendungsbeispiel ist:
Sie können es auch alle X Sekunden ausführen - fügen Sie einfach die Nummer X nach dem Befehl hinzu.
Bearbeiten: Im Hinblick auf einen Kommentar ... Schreiben Sie Folgendes in eine Datei und machen Sie diese Datei ausführbar. Hier erfahren Sie die drei wichtigsten Prozesse auf der Maschine.
Wenn Sie wissen möchten, welcher Speicher im Gegensatz zur CPU überlastet ist, lesen Sie die oberste Manpage und ändern Sie die Reihenfolge der Anzeige.
quelle