Lösung 1:
CPU-Zeit wird diskret zugewiesen Zeitscheiben (Ticks). Für eine bestimmte Anzahl von Zeitabschnitten ist die CPU beschäftigt, andere Male nicht (was durch den Leerlaufprozess dargestellt wird). In der Abbildung unten ist die CPU für 6 der 10 CPU-Slices beschäftigt. 6/10 =0,60 =60 % der beschäftigten Zeit (und es gäbe daher 40 % Leerlaufzeit).
Ein Prozentsatz ist definiert als "eine Zahl oder Rate, die als eine bestimmte Anzahl von Teilen von etwas ausgedrückt wird, das in 100 Teile geteilt wird". In diesem Fall handelt es sich bei diesen Teilen also um diskrete Zeitscheiben, und das Etwas ist beschäftigte Zeitscheiben im Vergleich zu Leerlaufzeitscheiben – die Rate von beschäftigten zu inaktiven Zeitscheiben.
Da CPUs in GHz (Milliarden von Zyklen pro Sekunde) arbeiten. Das Betriebssystem unterteilt diese Zeit in kleinere Einheiten, die Ticks genannt werden. Sie sind nicht wirklich 1/10 Sekunde. Die Tickrate in Windows beträgt 10 Millionen Ticks pro Sekunde und in Linux sysconf(_SC_CLK_TCK)
(normalerweise 100 Ticks pro Sekunde).
In etwas wie top
, werden die ausgelasteten CPU-Zyklen dann weiter in Prozentsätze von Dingen wie Benutzerzeit und Systemzeit aufgeschlüsselt. In top
Unter Linux und perfmon unter Windows erhalten Sie häufig eine Anzeige, die über 100 % liegt, da die Summe 100 % * the_number_of_cpu_cores beträgt.
In einem Betriebssystem ist es der Scheduler Aufgabe, diese wertvollen Slices Prozessen zuzuweisen, also meldet der Scheduler dies.
Lösung 2:
Die CPU-Zeit ist die Zeit, die der Prozess die CPU verwendet - die Umrechnung in einen Prozentsatz erfolgt durch Division durch die verstrichene Echtzeitzeit.
Wenn ich also einen Prozess habe, der 1 Sekunde CPU-Zeit über einen Zeitraum von 2 Sekunden verbraucht, verwendet er 50 % einer CPU.
Im Fall Ihres MATLAB-Prozesses geben 217 % an, dass er im letzten Abtastintervall 2,17 Sekunden CPU-Zeit pro Sekunde verwendet hat - effektiv, indem er 2 CPU-Kerne monopolisiert und etwas von einem Drittel beansprucht.