2009-04-21 4 views
2

OK, also für eine Programmieraufgabe, die ich habe (Ja, wir dürfen alle Quellen verwenden, die wir für hilfreich halten) Ich muss herausfinden, wie viel Zeit Prozesse verbringen Blockieren/Schlafen/Laufen.Ermittlung der Zeit, die Prozesse verbringen Blockieren/Ausführen

Mein erster Versuch war die Schaffung eines Bash-Skript ..., dass etwas so aussah:

for i in `ls /proc/ | egrep [0-9]+` 
do 
     cat /proc/$i/status | grep State 
done 

aber dann alle Probleme berichten, den Schlafzustand. Plus diese Methode würde erfordern, dass ich wie verrückt abstimmen ... So läuft der Test wird wahrscheinlich die Ergebnisse ändern ... (ugh)

Jetzt kompilieren eine neue Version eines Linux mit Syscalls oder eine Möglichkeit, die Verfolgung von Prozessen zu behalten Staaten sind nicht ausgeschlossen. Meine einzige Sorge versucht, herauszufinden, wie man den Überblick behalten von Prozesszuständen zu ändern und dafür sorgen, dass ich nichts verpassen ...

Antwort

1

Sie ‚Zeit‘

$ time ls /usr/bin 

real 0m4.756s 
user 0m0.051s 
sys  0m0.078s 

echte verwenden - sys = Gesamtzeit wartete auf I/O (Schlaf/blocking)

sys - user = die Zeit auf dem System ausgegeben ruft

user = die Zeit, die nur durch die Ausführung der Anweisungen in Ihrem Programm ausgegeben wurde (vielleicht einschließlich dynamischer Verknüpfung Overhead, nicht sicher darüber)

Verwandte Themen