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).