jajentsch@gmx.de schrieb am 20.01.05 19:08:56:
ich muß gestehen, ich habe bei dem time Befehl ein Verständnissproblem. Wenn ich time Programmname ausführe, zeigt er mir die Gesamtzeit, die Zeit im Usermode und die Zeit im Kernelmode, zb: real 0m19.915s user 0m3.500s sys 0m0.273s
Die Realzeit verstehe ich, die sagt mir meine Stopuhr auch, aber warum sind user + sys nicht gleich der Realzeit? Load liegt bei 0,3, die CPU bei 60% laut procmeter, und eine Ausgabe erfolgt bei dem Programm auch nicht. Was macht er also die fehlenden 16 Sekunden?
Die Realzeit besteht nicht nur aus der CPU-Zeit im User- und Kernelmode, sondern auch aus der Wartezeit (sleep). So muss ein Prozess evtl. warten, bis die CPU zugeteilt wird, bis Daten verfuegbar sind (Speicher, Register, etc.), bis ein gewisses Ereignis eingetreten ist (I/O muss z.B. abgeschlossen werden) oder bis ein gewisser Hardwarezustand eingetreten ist, usw. All das spiegelt sich in der Realzeit wieder. Die anderen beiden Zeiten sind reine CPU-Zeiten. Verhaelt sich z.B. ein selbstgeschriebenes Programm seltsam oder nicht wie erwartet, so kann das relative Verhaeltnis diese Zeiten untereinander andeuten, wo der Flaschenhals des Programmes liegt. Beachte bitte, dass "time" vermutlich ein Shell-interner Befehl bei Dir ist. Das Programm time findest Du unter /usr/bin/time. Es kennt die Option "-v", die Dir noch weitere Infos beschert. Siehe auch "man 2 times". Gruesse, Th.
participants (1)
-
Thomas Hertweck