Was ist "Systemzeit", wenn "Zeit" in der Befehlszeile verwendet wird?

10

Ich benutze, timeum ein PerlSkript auf dem Standardterminal in Ubuntu 14.04 zu messen.

Ich habe gelesen, dass real timeStoppuhrzeit ist; Die Zeit, die ich als Benutzer damit verbringe, mir das Programm anzusehen, von dem aus ich das Programm starte, bis es beendet wird. Aber ich verstehe nicht was useroder sysZeiten sind. Die Manpage timeist, gelinde gesagt, vage.

Es ist zwar etwas klar, dass die realZeit zwischen aufgeteilt ist userund syses nicht klar ist, was sie darstellen.

In meinem Skript vergleiche ich [1] C ++ und Perl miteinander, um den Unterschied zu erkennen, und ich möchte wissen, welche Daten ich tatsächlich erhalte. Eine Beispielausgabe ist:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

Könnte jemand bitte erläutern, was das Standardzeitformat dem Benutzer sagt? Ich bin ein Linux-Neuling, also nehmen Sie bitte nicht zu viel an.

[1] Obwohl C ++ in meinem Benchmark in Bezug auf die realZeit sysviel, viel schneller als Perl ist , unterscheiden sich die Zeiten interessanterweise nicht so sehr, da C ++ tatsächlich mehr sysZeit als Perl benötigt. Deshalb möchte ich wissen, was sie bedeuten

Alrekr
quelle
2
Dies wird ausführlich beantwortet unter Was bedeuten "real", "user" und "sys" in der Ausgabe der Zeit (1)?
lk

Antworten:

15

Aus Wikipedia :

  • Benutzerzeit vs Systemzeit

Der Begriff "Benutzer-CPU-Zeit" kann zunächst etwas irreführend sein. Die Gesamt-CPU-Zeit ist die Kombination aus der Zeit, die die CPU (s) für die Ausführung einer Aktion für ein Programm aufgewendet hat, und der Zeit, die die CPU (s) für die Ausführung von Systemaufrufen für den Kernel im Namen des Programms aufgewendet hat. Wenn ein Programm ein Array durchläuft, sammelt es Benutzer-CPU-Zeit. Wenn umgekehrt ein Programm einen Systemaufruf wie exec oder fork ausführt, akkumuliert es die CPU-Zeit des Systems.

  • Echtzeit gegen CPU-Zeit

Der Begriff "Echtzeit" bezieht sich in diesem Zusammenhang auf die verstrichene "Wanduhr" -Zeit, wie bei Verwendung einer Stoppuhr. Die Gesamt-CPU-Zeit (Benutzerzeit + Systemzeit) kann mehr oder weniger als dieser Wert betragen. Da ein Programm möglicherweise einige Zeit warten und überhaupt nicht ausführen muss (ob im Benutzermodus oder im Systemmodus), ist die Echtzeit möglicherweise länger als die gesamte CPU-Zeit. Da ein Programm Kinder unterteilen kann, deren CPU-Zeiten (sowohl Benutzer als auch System) zu den vom Zeitbefehl angegebenen Werten addiert werden, kann die Gesamt-CPU-Zeit größer als die Echtzeit sein.

Konstantinos
quelle
1
Ich verstehe nicht, wie ich diesen Wikipedia-Artikel nicht gefunden habe. Vielen Dank.
Alrekr