GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-CPU-Auslastung und Verlauf der Prozessausführung

Lösung 1:

Es gibt mehrere Möglichkeiten, wie Sie dies tun können. Beachten Sie, dass dies durchaus durch viele Prozesse in einem außer Kontrolle geratenen Szenario verursacht werden kann, nicht nur durch einen.

Die erste Möglichkeit besteht darin, pidstat so einzurichten, dass es im Hintergrund läuft und Daten produziert.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Dadurch erhalten Sie in 10-Minuten-Intervallen einen recht detaillierten Überblick über den Betrieb des Systems. Ich würde vorschlagen, dass dies Ihre erste Anlaufstelle ist, da es die wertvollsten/zuverlässigsten Daten liefert, mit denen Sie arbeiten können.

Es gibt ein Problem damit, vor allem, wenn die Box in eine außer Kontrolle geratene CPU-Schleife gerät und eine große Last erzeugt - Sie können nicht garantieren, dass Ihr tatsächlicher Prozess während des Ladens rechtzeitig ausgeführt wird (wenn überhaupt), sodass Sie die Ausgabe tatsächlich verpassen könnten !

Die zweite Möglichkeit, danach zu suchen, besteht darin, die Prozessabrechnung zu aktivieren. Möglicherweise eher eine langfristige Option.

accton on

Dadurch wird die Prozessabrechnung aktiviert (falls noch nicht hinzugefügt). Wenn es vorher nicht ausgeführt wurde, wird es einige Zeit dauern, bis es ausgeführt wird.

Nachdem er beispielsweise 24 Stunden lang ausgeführt wurde, können Sie einen solchen Befehl ausführen (der eine Ausgabe wie diese erzeugt)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Die Spalten sind wie folgt geordnet:

  1. Anzahl der Anrufe
  2. Prozentsatz der Anrufe
  3. Menge an Echtzeit, die für alle Prozesse dieses Typs aufgewendet wird.
  4. Prozentsatz.
  5. Benutzer-CPU-Zeit
  6. Prozentsatz
  7. System-CPU-Zeit.
  8. Durchschnittliche IO-Aufrufe.
  9. Prozentsatz
  10. Befehlsname

Was Sie suchen, sind die Prozesstypen, die die meiste Benutzer-/System-CPU-Zeit generieren.

Dadurch werden die Daten in die Gesamtmenge der CPU-Zeit (obere Reihe) und dann in die Aufteilung dieser CPU-Zeit unterteilt. Verarbeiten Sie Accounts nur ordnungsgemäß, wenn sie eingeschaltet sind, wenn Prozesse spawnen, daher ist es wahrscheinlich am besten, das System neu zu starten, nachdem Sie es aktiviert haben, um sicherzustellen, dass alle Dienste berücksichtigt werden.

Dies gibt Ihnen keineswegs eine genaue Vorstellung davon, welcher Prozess die Ursache für dieses Problem sein könnte, gibt Ihnen jedoch ein gutes Gefühl. Da es sich um einen 24-Stunden-Schnappschuss handeln könnte, besteht die Möglichkeit verzerrter Ergebnisse, also denken Sie daran. Es sollte auch immer protokollieren, da es sich um eine Kernel-Funktion handelt und im Gegensatz zu Pidstat auch bei hoher Belastung immer eine Ausgabe erzeugt.

Die letzte verfügbare Option verwendet auch die Prozessabrechnung, sodass Sie sie wie oben einschalten können, aber dann das Programm "lastcomm" verwenden, um einige Statistiken von Prozessen zu erstellen, die zum Zeitpunkt des Problems ausgeführt wurden, zusammen mit CPU-Statistiken für jeden Prozess.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

Dies könnte Ihnen auch einige Hinweise geben, was das Problem verursachen könnte.

Lösung 2:

Atop ist ein besonders praktischer Daemon für die Betrachtung von Drilldowns auf die Prozessebene und archiviert diese Daten standardmäßig für 28 Tage. Abgesehen davon, dass Sie eine fantastische Echtzeit-Überwachungsschnittstelle präsentieren, können Sie diese Protokolldateien angeben, um sie zu öffnen und durch sie zu gehen.

Der Artikel gibt eine Vorstellung von den Fähigkeiten, und Sie können mehr auf der Manpage finden.

Es ist wirklich ein wunderbares Stück Software.

Lösung 3:

Programme wie psmon und monit könnten für Sie hilfreich sein. Diese können die auf Ihrem System laufenden Prozesse überwachen und wenn ein Schwellenwert (CPU-Auslastung, Speicherauslastung ...) überschritten wird, können Sie festlegen, dass sie Ihnen einen E-Mail-Bericht über die Vorgänge senden.

Es ist auch möglich, die fehlerhaften Prozesse automatisch neu zu starten.


Linux
  1. Finden Sie die am häufigsten ausgeführten Prozesse nach höchster Speicher- und CPU-Auslastung in Linux

  2. Linux-Cat-Befehl:Verwendung und Beispiele

  3. Der Linux-Sed-Befehl:Verwendung und Beispiele

  4. Finden Sie die Ausführungszeit eines Befehls oder Prozesses in Linux

  5. So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux

3 Tipps zur Verbesserung der Linux-Prozessleistung mit Priorität und Affinität

So erhalten Sie die CPU-Auslastung eines einzelnen Prozesses in Linux

Unix- und Linux-Geschichte

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux

So überprüfen Sie die Linux-CPU-Auslastung oder -Auslastung

Ubuntu Linux:Auslagerungsspeicher und Speichernutzung verarbeiten