Wie wird der Prozentsatz der CPU-Auslastung berechnet?

Wie wird der Prozentsatz der CPU-Auslastung berechnet?

In meinem Ubuntu 12.04 habe ich mit psensor eine Prozentzahl gesehen, die für die CPU-Auslastung aktualisiert wurde. Ich frage mich, wie dieser Prozentsatz berechnet wurde. Genauer gesagt, was ist der Zähler und der Nenner im Verhältnis?

Danke!

Antwort1

DerProzessorauslastung in Prozentwird mit „der Zeitdauer berechnet, die der Prozessor nicht im Leerlauf ist“. Ich meine, diese Berechnung basiert auf einem Zähler, der die Nutzung des im Leerlauf laufenden Prozesses registriert. Während andere Prozesse dem im Leerlauf laufenden Prozess die Prozessorleistung „rauben“, wird das Verbraucherregister des im Leerlauf laufenden Prozessors um einen Faktor verringert; da die Zeitlinie fest und konstant ist, ist (1-„%Zeit im Leerlauf“) die Menge an Prozessorlast, die für alle auf einem Prozessor laufenden Prozesse verwendet wird:

Bildbeschreibung hier eingeben

Definieren der CPU-Auslastung

Für unsere Zwecke definiere ich die CPU-Auslastung U als die Zeit, die nicht im Leerlauf der Aufgabe verbringt, wie in Gleichung 1 gezeigt.

Die Leerlaufaufgabe ist die Aufgabe mit der absolut niedrigsten Priorität in einem Multitasking-System. Diese Aufgabe wird manchmal auch als Hintergrundaufgabe oder Hintergrundschleife bezeichnet, wie in Listing 1 gezeigt. Diese Logik hat traditionell eine Schleife vom Typ while(1). Mit anderen Worten: Eine Endlosschleife lässt die CPU rotieren und wartet auf einen Hinweis, dass kritische Arbeit erledigt werden muss.

Listing 1: Einfaches Beispiel einer Hintergrundschleife

int main( void )
{
   SetupInterrupts();
   InitializeModules();
   EnableInterrupts();

   while(1)      /* endless loop - spin in the background */
   {
      CheckCRC();
      MonitorStack();
      ... do other non-time critical logic here.
   }
}

Diese Darstellung ist eigentlich eine Vereinfachung, da einige „echte“ Arbeiten häufig im Hintergrund erledigt werden. Die für die Ausführung während des Leerlaufvorgangs codierte Logik darf jedoch keine strengen Echtzeitanforderungen haben, da nicht garantiert ist, wann diese Logik abgeschlossen wird. Tatsächlich besteht eine Technik, die Sie in einem überlasteten System verwenden können, darin, einen Teil der Logik mit weniger strengen Zeitanforderungen aus den strengen Echtzeitaufgaben in den Leerlaufvorgang zu verschieben.

verwandte Informationen