Ich kann anhand der Namen raten, aber was genau sind Wanduhrzeit, Benutzer-CPU-Zeit und System-CPU-Zeit unter UNIX?
Ist die Benutzer-CPU-Zeit die Zeit, die für die Ausführung des Benutzercodes aufgewendet wird, während die Kernel-CPU-Zeit die Zeit ist, die im Kernel verbracht wird, weil privilegierte Vorgänge (wie E / A auf der Festplatte) erforderlich sind?
In welcher Zeiteinheit ist diese Messung?
Und ist die Wanduhrzeit wirklich die Anzahl der Sekunden, die der Prozess für die CPU aufgewendet hat, oder ist der Name nur irreführend?
unix
operating-system
John Humphreys - w00te
quelle
quelle
Antworten:
Die Wanduhrzeit ist die Zeit, die eine Uhr an der Wand (oder eine Stoppuhr in der Hand) als zwischen dem Beginn des Prozesses und "jetzt" verstrichen messen würde.
Die Benutzer-CPU-Zeit und die System-CPU-Zeit sind so ziemlich wie Sie sagten - die Zeit, die im Benutzercode verbracht wird, und die Zeit, die im Kernel-Code verbracht wird.
Die Einheiten sind Sekunden (und Subsekunden, die Mikrosekunden oder Nanosekunden sein können).
Die Wanduhrzeit ist nicht die Anzahl der Sekunden, die der Prozess für die CPU aufgewendet hat. Dies ist die verstrichene Zeit, einschließlich der Wartezeit auf das Einschalten der CPU (während andere Prozesse ausgeführt werden).
quelle
CPUtime = #clock_cycles / clock_rate
kann nicht mit der Berechnung der verstrichenen Zeit identisch sein. Wissen Sie, ob ich die verstrichene Zeit aus der CPU-Zeit abrufen kann?read()
odergetpid()
), führt der Kernel Code für Ihr Programm aus. Der Kernel übernimmt auch vorbeugendes Multitasking, damit andere Programme an die Reihe kommen, und führt einige allgemeine Verwaltungsarbeiten durch, um den reibungslosen Betrieb des Systems zu gewährleisten. Dieser Code wird im 'Kernel-Code' ausgeführt (auch im 'Kernel-Modus'). Dies unterscheidet sich von dem von Ihnen geschriebenen Code und den von Ihnen ausgeführten Benutzerbibliotheken (einschließlich der System-C-Bibliothek).Wanduhrzeit: Die verstrichene Zeit richtet sich nach der internen Uhr des Computers, die mit der Zeit in der Außenwelt übereinstimmen sollte. Dies hat nichts mit der CPU-Auslastung zu tun. es wird als Referenz gegeben.
Benutzer-CPU-Zeit und Systemzeit: genau das, was Sie denken. Systemaufrufe, die Folgendes umfassen I / O - Aufrufe wie
read
,write
usw. durch einen Sprung in Kernel - Code ausgeführt werden , und dass die Ausführung.Wenn die Wanduhrzeit <CPU-Zeit ist, führen Sie ein Programm parallel aus. Wenn Wanduhrzeit> CPU-Zeit, warten Sie auf Festplatte, Netzwerk oder andere Geräte.
Alle werden in Sekunden pro SI gemessen .
quelle
Die Wanduhrzeit ist genau das, was sie sagt. Die verstrichene Zeit wird gemessen an der Uhr an Ihrer Wand (oder Armbanduhr).
Die Benutzer-CPU-Zeit ist die Zeit, die im "Benutzerland" verbracht wird, dh die Zeit, die für Nicht-Kernel-Prozesse aufgewendet wird
Die System-CPU-Zeit ist die im Kernel verbrachte Zeit, normalerweise die Zeit, die für die Bearbeitung von Systemaufrufen aufgewendet wird.
quelle
echte oder Wanduhr
echte 7m2.444s
Auf einem System mit 24-Kern-Prozessor dauerte dieser cmd / Prozess mehr als 7 Minuten. Dies durch Nutzung der größtmöglichen Parallelität mit allen gegebenen Kernen.
Benutzer
Benutzer 76m14.607s
Der cmd / Prozess hat so viel CPU-Zeit verbraucht. Mit anderen Worten, auf einem Computer mit Single-Core-CPU sind Real und Benutzer nahezu gleich, sodass der gleiche Befehl ca. 76 Minuten dauert.
sys
sys 2m29.432s
Dies ist die Zeit, die der Kernel benötigt, um alle Operationen auf Basis- / Systemebene auszuführen, um dieses Cmd auszuführen, einschließlich Kontextwechsel, Ressourcenzuweisung usw.
quelle
(user + sys) / real