CPU -Zeit

CPU -Zeit auf einem einzelnen CPU -Multi -Tasking -System
 CPU -Farbzeit für Programm P1

CPU -Zeit (oder Prozess Zeit) ist die Menge von Zeit für was a Zentrale Verarbeitungseinheit (CPU) wurde zur Verarbeitung verwendet Anweisungen von a Computer Programm oder Betriebssystemim Gegensatz zur verstrichenen Zeit, die zum Beispiel auf das Warten einbezieht Input-Output (E/O) Operationen oder Eingabe von Low-Power-Modus (Leerlauf). Die CPU -Zeit wird in gemessen Uhr Zecken oder Sekunden. Oft ist es nützlich, die CPU -Zeit als Prozentsatz der Kapazität der CPU zu messen, die als die genannt wird CPU auslastung. Die CPU -Zeit und die CPU -Verwendung haben zwei Hauptnutzungen.

Das CPU -Zeit wird verwendet, um die gesamte empirische Effizienz von zwei funktional identischen Algorithmen zu quantifizieren. Zum Beispiel alle Sortieren von Algorithmus Nimmt eine unsortierte Liste und gibt eine sortierte Liste zurück und wird dies in a tun deterministisch Anzahl der Schritte, die für eine bestimmte Eingabeliste basieren. Jedoch a Blasenart und ein Zusammenführen, sortieren anders haben Laufzeitkomplexität so dass die Zusammenführungsart in weniger Schritten dazu neigt. Ohne Kenntnis der Funktionsweise eines Algorithmus zeigt eine größere CPU -Zeit der Blasensortierung, dass sie für bestimmte Eingabedaten weniger effizient ist als für die Zusammenführungssortierung.

Diese Art von Messung ist besonders nützlich, wenn sie wie Algorithmen verglichen werden, die in der Komplexität nicht trivial sind. In diesem Fall ist die Wandzeit (die tatsächliche Dauer verstrichen) irrelevant, der Computer kann das Programm langsamer oder schneller ausführen, abhängig von Variablen der realen Welt wie der Temperatur der CPU sowie anderen Betriebssystemvariablen wie der Priorität des Prozesses.

Das CPU auslastung wird verwendet, um zu quantifizieren, wie der Prozessor zwischen Computerprogrammen geteilt wird. Eine hohe CPU -Nutzung durch ein einzelnes Programm kann darauf hinweisen, dass es sehr anspruchsvoll von Verarbeitungsleistung ist oder dass es fehlfest werden kann. Zum Beispiel hat es eine eingegeben Endlosschleife. Die CPU -Zeit ermöglicht die Messung der Verarbeitungsleistung, die ein einzelnes Programm erfordert, die Interferenzen beseitigt, z.

Im Gegensatz, verstrichene Echtzeit (oder einfach Echtzeit oder Wandverkaufszeit) ist die Zeit, die vom Beginn eines Computerprogramms bis zum Ende gemessen wird, gemessen an einer gewöhnlichen Uhr. Verstrichene Echtzeit umfasst eine E/A -Zeit, alle Multitasking -Verzögerungen und alle anderen Arten von Waiten, die dem Programm entstehen.

Unterteilung

CPU -Zeit oder CPU -Verwendung kann entweder für jeden gemeldet werden Faden, für jeden Prozess oder für das gesamte System. Darüber hinaus können die gemeldeten Werte je nachdem, was genau die CPU tat, unterteilt werden:

  • Benutzerzeit Ist die Zeit, in der die CPU mit dem Code ausführte, in dem Code ausgeführt wurde Benutzerraum.
  • Systemzeit Ist die Zeit, in der die CPU mit dem Code ausführte, in dem Code ausgeführt wurde Kernelraum. Wenn dieser Wert für einen Thread oder einen Prozess gemeldet wird, repräsentiert er die Zeit, die der Kernel im Namen der Ausführung arbeitete KontextZum Beispiel nach einem Thread a Systemanruf.
  • Wartezeit (Nur für das gesamte System) ist die Zeit, in der die CPU nicht beschäftigt war, oder ansonsten die Zeit, die sie ausgeführt hat Systemleerlaufprozess. Die Leerlaufzeit misst tatsächlich die nicht verwendete CPU -Kapazität.
  • Zeit stehlen (nur für das gesamte System), auf virtualisiert Hardware, ist die Zeit, die die Zeit ist Betriebssystem wollte ausführen, durfte aber nicht von der Hypervisor.[1] Dies kann passieren, wenn die physische Hardware mehrere Gastbetriebssysteme ausführt und der Hypervisor einen CPU -Zeitfenster für einen anderen zuteilt.

UNIX -Befehle für die CPU -Zeit

obenAnzeige der CPU -Zeit verschiedener Prozesse auf a Unix-artig (GNU/Linux) System

UNIX -Befehl oben

Das Unix Befehl oben Bietet CPU -Zeit, Priorität, verstrichene Echtzeitund andere Informationen für alle Prozesse und Aktualisierung in Echtzeit.

UNIX -Befehl Zeit

Das Unix Befehl Zeit Druckt CPU -Zeit und verstrichen Echtzeit für einen Unix -Prozess.

% GCC NEXTPRIMENUMUM.C -O NEXTPRIMENUMBER% Zeit ./nextPrimenumber 30000007 Primzahl mehr als 30000007 ist 30000023 0,327U 0,010S 0: 01,15 28,6% 0+0K 0+0IO 0PF+0W 

Dieser Prozess dauerte insgesamt 0,337 Sekunden der CPU -Zeit, von denen 0,327 Sekunden im Benutzerraum verbracht wurden, und die letzten 0,010 Sekunden im Kernelmodus im Auftrag des Prozesses. Verstrichene Echtzeit war 1,15 Sekunden.

Das Folgende ist der Quellcode der Anwendung NextPrimenumber, der im obigen Beispiel verwendet wurde.

// NextPrimenumber.c #enthalten  #enthalten  int isPrimenumber(ohne Vorzeichen lang int n) {   zum (int i = 2; i <= (n >> 1); ++i)   wenn (n % i == 0) Rückkehr 0;   Rückkehr 1; } int hauptsächlich(int argc, verkohlen *argv[]) {   ohne Vorzeichen lang int Streit = Strtoul(argv[1], NULL, 10), n = Streit;   während (!isPrimenumber(++n));   printf("Primzahl größer als %lu ist %lu\n", Streit, n);   Rückkehr 0; } 

POSIX -Funktionen Uhr() und Getrusage ()

POSIX -Funktionen Uhr() und Getrusage () Kann verwendet werden, um die CPU -Zeit für jeden Prozess in einer POSIX -Umgebung zu konsumieren. Wenn der Prozess multithread ist, ist die CPU -Zeit die Summe für alle Themen. Wenn Linux aus dem Kernel 2.6.26 beginnt, gibt es einen Parameter Ruusage_Thread, der nur für den aufrufenden Thread zu Ressourcenverbrauchsstatistiken führt.

Gesamt -CPU -Zeit

An Mehrprozessor Maschinen können ein Computerprogramm zwei oder mehr verwenden CPUs zur Verarbeitung mithilfe Parallelverarbeitung Planung. In solchen Situationen der Begriff von Gesamt -CPU -Zeit wird verwendet, das ist die Summe der CPU -Zeit, die von allen vom Computerprogramm verwendeten CPUs verbraucht wird.

CPU -Zeit und verstrichene Echtzeit

Die verstrichene Echtzeit ist immer größer oder gleich der CPU -Zeit für Computerprogramme, die nur eine CPU zur Verarbeitung verwenden. Wenn keine Wartezeit für E/A oder andere Ressourcen beteiligt ist, sind verstrichene Echtzeit und die CPU -Zeit sehr ähnlich.

CPU -Zeit und verstrichene Echtzeit für die parallele Verarbeitungstechnologie

Wenn ein Programm verwendet ParallelverarbeitungDie Gesamt -CPU -Zeit für dieses Programm wäre mehr als die verstrichene Echtzeit. (Gesamt -CPU -Zeit)/(Anzahl der CPUs) wäre das gleiche wie verstrichene Echtzeit, wenn die Arbeitsbelastung auf jeder CPU gleichmäßig verteilt wird und keine Wartezeit für I/A oder andere Ressourcen beteiligt ist.

Beispiel: Eine auf a ausgeführte Softwareanwendung Hexa-Core-Prozessor Erstellt drei UNIX -Prozesse zur Erfüllung der Benutzeranforderung.Jedes dieser drei Prozesse erzeugt zwei Threads, die insgesamt 6 funktionierende Fäden aufzählen.Die Berechnung ist gleichmäßig auf den 6 unabhängigen Threads verteilt.Wenn keine Wartezeit auf Ressourcen beteiligt ist, wird die gesamte CPU -Zeit voraussichtlich sechsmal so viel Echtzeit beträgt.

Siehe auch

Verweise

  1. ^ Ehrhardt, Christian (Juli 2010). "CPU -Zeitbuchhaltung". IBM. Abgerufen 2014-08-05.

Externe Links