Maximale CPU Time ermitteln

Die maximale CPU Time eines Servers hängt von seiner Lebenszeit ab.

CPU Time ist die Zeit, die ein Prozess den Server beansprucht (hat). Wenn er z.B. 100 Sekunden lief und die CPU dauerhaft zu 25% beansprucht hat, sind das 25 Sekunden CPU Time.

Ich bin mir sicher, du willst irgendwas anderes wissen. Ich weiß nur noch nicht was ;-)
 
:D

Ich möchte schon die CPU Time wissen, allerdings nicht insgesamt auf die Lebenszeit des Servers, sondern eine bestimme Zeit, beispielsweise maximale CPU Time pro Minute, Stunde, Tag oder Monat.

Oder, Stopp, Moment, wären dann nicht 60 Sekunden CPU Time die maximale CPU Time pro Minute? :rolleyes: :D

Wenn dem so ist, gilt das dann für alle Kerne oder logischen CPUs (mit HT) oder nur je Kern oder logische CPU?
 
Dann gilt die CPU Time also für den gesamten Server, unabhängig der Anzahl an Sockets, Kernen und HT?

Ich bin mir ziemlich sicher, dass die CPU Time pro Kern gilt. Wenn du auf einem QuadCore-Prozessor also vier Prozesse auf den einzelnen Kernen unter Volllast laufen hast, erzeugst du in 10 Sekunden folglich eine "Last" von 40 Sekunden CPU Time.
 
So pauschal kann man es nun natürlich nicht ausdrücken. Die CPU-Zeit bezieht sich immer auf einen Prozess bzw. Task den die CPU zu verarbeiten hat und nie auf das gesamte System.

Wenn man mal in der Technik 20 Jahre zurück geht (da wo es noch einfach war) und man von 2 echten physikalischen Prozessoren ausgeht, wäre es mit 2 Prozessen/Tasks möglich innerhalb einer Minute die 2 Minuten CPU-Zeit zu erreichen, weil beide Prozesse jeweils von einer CPU, aber gleichzeitig, abgearbeitet werden.
Mitzunehmender Komplexität der Hardware (Multi-Core CPUs, HT und andere parallesierungs Spielerein) und Software (z.B. Threading) wird das immer schwieriger sauber zu erklären.

Vielleicht verrätst du uns also lieber mal, was Ziel des ganzen ist. Dann muss man nicht so drum herum reden. ;)
 
Last edited by a moderator:
Doch in der Theorie kann man das genau so pauschal ausdrücken.

Wenn ich einen einzelnen Thread habe der auf einem Kern meiner 4-Kern CPU läuft und 100% dieses Kerns in Anspruch nimmt, erzeugt dieser Thread pro echter Sekunde eine Sekunde CPU Time. Also würden vier solcher Threads, die sich auf die Kerne verteilen, in einer echten Sekunde vier Sekunden CPU Time erzeugen.

Siehe hierzu: https://en.wikipedia.org/wiki/CPU_t..._real_time_for_parallel_processing_technology

Unabhängig davon hast du natürlich recht, dass diese Fragestellung und deren Beantwortung absolut theoretischer Natur ist und damit eigentlich niemanden weiterbringt. Was genau DerNeueDa bezwecken will, würde mich also auch interessieren ;)
 
Last edited by a moderator:
Also ich suche nach einer Lösung bei der KVM-Virtualisierung möglichst die tatsächlich verbrauchte CPU-Zeit/-Last/-"Verbrauch"/-whatever zu ermitteln. Eine KVM-VM ist immer ein Prozess, mit virsh lässt sich auch die CPU Time der VM ausgeben.. und mittels der gesamten CPU Time könnte ich eine Prozentzahl für die VM rauskriegen oder sonst irgendwas berechnen..
 
Tipp doch mal langsamer. Ich wollt meinen vorhergehenden Beitrag gerade noch korrigieren. ;)

Mr. Check hat recht, die CPU Time eines Prozesses ist von der Anzahl der Cores bzw. CPUs abhängig. Sofern der Prozess überhaupt mehr als ein Core gleichzeitig nutzen kann (Threads).
Ausug aus Wikipedia:
http://en.wikipedia.org/wiki/CPU_time said:
If a program uses parallel processing, total CPU time for that program would be more than its elapsed real time. (Total CPU time)/(Number of CPUs) would be same as elapsed real time if work load is evenly distributed on each CPU and no wait is involved for I/O or other resources.
 
Vielen Dank für die Informationen!

Mr.Check, darfst dennoch gerne Dein Wissen teilen, lieber (halb)falsch als nichts :-)

Ist die CPU Time nun von der Anzahl der "echten" Kerne abhängig oder den HT-Dingern? Also bei einem Intel QuadCore mit HT 4 CPU-Sekunden pro Zeit-Sekunden oder 8 CPU-Sekunden pro Zeit-Sekunde?

Ich gehe mal von letzterem aus. So könnte man doch wie folgt die CPU-Auslastung in Prozent für eine VM berechnen:

Code:
CPU-Sekunden der VM / HT-Kerne = Auslastung in Prozent

Beispiel:

Code:
100 CPU-Sekunden / 8 HT-Kerne = 12,5 % Auslastung

Oder? :)

Edit: Nee, irgendwas muss noch dazu (die Zeit-Sekunden!?), bei 1000 CPU-Sekunden sind's dann ja 125% Auslastung :D
 
Last edited by a moderator:
Und nun sind wir genau an dem Punkt, den ich vorhin mit meinem "20 Jahre altem Beispiel" meinte. HT und diverse andere Techniken sind so komplex, dass sie derart "einfache" Rechnungen nicht zulassen.
Denn je nach durchgeführter Operation in der CPU, bedarf es im Falle von HT unterschiedlicher Vorraussetzungen und Management Aufwandes. Wenn du also mit 2 (HT) "Cores" rechnest, könnte es dir passieren, dass du nicht durch 2 teilen musst, sondern vielleicht durch 2,2 oder 1,8.

HT bringt nicht nur Performancevorteile, sondern in vielen Situationen auch Performancenachteile. Das muss man sich aber im Einzelfall betrachten.
Kommt am Ende ja auch drauf an, für was die Kalkulation genutzt werden soll. Wenn die Auslastung dem Kunden in Rechnung gestellt werden soll, wird es Diskussionen geben, sobald der Kunde selbst anfängt die Werte zu protokollieren und zu vergleichen. ;)
Anderenfalls kann man als Unternehmer zumindest auf die Mischkalkulation spekulieren. Was der eine Kunde zuviel zahlt, zahlt der nächste vielleicht zuwenig. ;)
 
Na das ist doch Mist. :(

htop zeigt doch wunderschön die Prozent-Auslastung je Prozess an.. wie wird das denn berechnet?

Nachtrag:

Der Befehl
ps -o pcpu -p PID
gibt doch die CPU-Auslastung in Prozent über die gesamte Laufzeit eines Prozesse an, richtig? Ist eigentlich das was ich will :-)

Nachtrag 2: Ich glaube, ich weiß eigentlich gar nicht mehr, was ich genau will.. Pause.
 
Last edited by a moderator:
Back
Top