Statistik: CPU-Zeit vs. verstrichene Zeit. Was ist wichtiger?

9

Was ist bei der Leistungsoptimierung wichtiger:

  • CPU-Zeit oder verstrichene Zeit?
  • Gibt es Szenarien, in denen eines wichtiger ist als das andere?

Ein Beispiel: Während der Leistungsoptimierung wird die CPU-Zeit um ~ 38% reduziert , die verstrichene Zeit jedoch um ~ 22%. Ist das eine Verbesserung ?

Gib den code ein
quelle
5
Wichtig für wen? Ihre Anforderungen können von meinen abweichen. Für die meisten meiner Kunden ist die verstrichene Zeit (Wartezeit der Benutzer) weitaus wichtiger als die CPU-Zeit. Nein, das wäre keine Verbesserung. Ihre CPUs arbeiten weniger, aber höchstwahrscheinlich werden weniger knappe Ressourcen zum Ausgleich verwendet (normalerweise E / A). Möglicherweise haben Sie IT-Bean-Counter-Typen, die die CPU-Zeit über die verstrichene Zeit bewerten, da sie auf Warnungen zu CPU-Spitzen oder was Sie haben eingestellt sind. Sie haben andere Anforderungen als Ihre Endbenutzer, aber Sie müssen möglicherweise beide erfüllen. Ich glaube nicht, dass es eine einfache Antwort gibt.
Aaron Bertrand
Wenn die Abfrage sehr oft ausgeführt wird, kann die reduzierte CPU zu einer insgesamt reduzierten Zeit führen?
EnterTheCode
Mit dem Beispiel, das Sie gegeben haben, unwahrscheinlich.
Aaron Bertrand

Antworten:

14

Die CPU-Zeit ist die vom Prozess benötigte Prozessorzeit. Dies zeigt keine Dauer an . "Verstrichene Zeit" repräsentiert die Gesamtdauer der Aufgabe. Wenn eine bestimmte Aufgabe eine Parallelität von 8 (dh 8 Threads) verwendet und jeder Thread über die gesamte Dauer der Aufgabe mit einer Rate von 100% verwendet wird, kann die CPU-Zeit 8000 ms betragen, während die verstrichene Zeit nur 1000 ms beträgt.

Daher zeigt eine kürzere "verstrichene Zeit" eine schnellere Antwortzeit an.

Möglicherweise möchten Sie eine kürzere CPU-Zeit und eine längere verstrichene Zeit, wenn Sie sich Gedanken über den CPU-Druck machen und sich nicht um die Benutzererfahrung kümmern.

Sie können eine längere CPU-Zeit akzeptieren, wenn dies zu einem Rückgang der verstrichenen Zeit führt, da dies möglicherweise darauf hinweist, dass der Benutzer auf Kosten einer höheren CPU-Auslastung weniger wartet.

Die wahrscheinlich wichtigere Metrik für die Abfrageoptimierung wären Wartezeiten .

Max Vernon
quelle
4

... während die Leistungsoptimierung die CPU-Zeit um ~ 38% verringert, die verstrichene Zeit jedoch um ~ 22% erhöht. Ist das eine Verbesserung?

Dies hängt ganz davon ab, wofür Sie optimieren und warum. Im allgemeinsten Sinne - Geschwindigkeit der Abfrageausgabe - ist dies keine Verbesserung, wie Max Vernon in seiner Antwort feststellte.

Allerdings , wenn Ihr System CPU-gebunden ist , dann dies wäre eine Verbesserung, wie Sie die CPU - Last verringert. Wenn dies der Fall wäre, könnte das Endergebnis auch eine schnellere Rückgabe der Ergebnismenge bedeuten.

Und wenn Ihr System festplatten- oder speichergebunden wäre, wäre dies ein neutrales Ergebnis, da es keinen Hinweis darauf gibt, dass es diese Maßnahmen entweder verbessert oder verschlechtert hat.

In 95% der Fälle ist Max absolut korrekt - dies ist keine Verbesserung. In den verbleibenden wenigen Fällen kann es sich um eine Verbesserung handeln.

Lachender Vergil
quelle