Linux-Prozessabrechnung – Unterschied zwischen den Feldern „cp“ und „cpu“?

Linux-Prozessabrechnung – Unterschied zwischen den Feldern „cp“ und „cpu“?

Ich habe mir überlegt, die Prozessbuchhaltung zu verwenden, um den Überblick über verschiedene Benutzer und Sites zu behalten, die Skripts ausführen, die in unserer Umgebung problematisch sind, anstatt zu versuchen, in regelmäßigen Abständen so etwas wie ein Top-Scraping durchzuführen.

Nicht ganz klar ist, welche FelderWirklichgibt die verbrauchten Sekunden/Minuten der CPU an. In den Handbuchseiten, die ich gelesen habe, steht in der Spalte „cpu“ die verbrauchten Sekunden, allerdings gibt es auch die Spalte „cp“, die mit -m angezeigt wird – und diese können unterschiedliche Gesamtwerte anzeigen. Beispiel:

Wenn ich das Flag -m verwende, erhalte ich

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

Wenn ich das Flag -u verwende und die Spalte für „CPU“ zusammenzähle, erhalte ich Folgendes:

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

Kann mir jemand helfen, den Unterschied zwischen den Spalten „cp“ und „cpu“ in diesen beiden unterschiedlichen Modi zu verstehen?

Danke!

Antwort1

Lassen Sie mich anhand eines Beispiels erklären, was die obigen Ergebnisse zeigen:

Erstens: Ich habe ein Bash-Skript erstellt, das ich als Benutzer patrickr ausgeführt habe und das das System ausreichend belasten sollte, um es spürbar zu machen.

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

Zweitens: Ich habe acct deinstalliert und dann neu installiert, damit meine Dateien in /var/log/acct aktuell sind. Erstellen Sie eine Kopie der Datei /var/log/acct/pacct, damit Sie die Datei in Zukunft problemlos durch eine richtig formatierte Datei ersetzen können (Sie können die Datei nicht einfach löschen und neu erstellen – sa funktioniert dann nicht mehr). Beachten Sie, dass diese Datei ein Protokoll aller Befehle auf dem System ist und es meines Wissens keine Möglichkeit gibt, Teile des Protokolls zeitraumbezogen abzurufen.

Drittens: Ich habe dieses Skript dann zweimal als Patrickr ausgeführt

patrickr@hostname:~$ bash loop_script.sh

Ich gebe Ihnen die Ergebnisse bekannt und erkläre sie anschließend:

Ausgeführt als Root (oder ein anderer Benutzer als Patrickr). Nach der ersten Schleife als Patrickr:

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

Nach der zweiten Schleife als Patrickr:

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

Folgendes sehen Sie:

sa -m zeigt Durchschnittswerte für die gesamte Aktivität dieses Servers im Zeitverlauf an. Diese Datei wird mit der Zeit größer, je mehr Befehle ausgeführt werden.

sa -u | grep patrickr zeigt die Summe der System- und Benutzerzeit in CPU-Minuten für bestimmte Befehle an.

Wird ausgeführt: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'

Gibt Ihnen eine Gesamtsumme für den Benutzer Patrick, aber der Befehl sa -m gibt Ihnen tatsächlich Durchschnittswerte. Sehen Sie sich die Speicherwerte an, wenn Sie ein zweites Beispiel benötigen. Sie sind ebenfalls Durchschnittswerte.

Wenn ich die drei oben für patrickr aufgeführten Ergebnisse, .35 + .37 + .0, addiere, durch 106 dividiere und auf die nächste Hundertstelstelle runde, erhalte ich 0,01 cp.

Das Ergebnis von 0,01 cp ist die durchschnittliche Belastung des Systems durch den Benutzer patrickr im Vergleich zur gesamten Belastung des Systems seit der Installation der Anwendung „acct“ (d. h. seit die Datei „/var/log/acct/pacct“ mit der Aufzeichnung begonnen hat).

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

Eine gute Ressource, die Ihnen helfen wird, finden Sie unterbeginlinux.com(Originallink gefundenHier).

verwandte Informationen