Was ist der Grund, warum die CPU-Auslastung hoch wird?

423
user3198603

Der Einfachheit halber sei angenommen, ich habe einen Single-Core-Prozessor. Ich habe zwei parallel laufende Aufgaben. Meines Wissens ist es so, dass der Prozessor die Aufgaben im Round-Robin-Modus ausführt, dh eine zu einer bestimmten Zeit.

Wenn nun eine der Aufgaben mehr Zyklen verwendet, ist die Auslastung höher. Ist das korrekt? Wenn ja, wenn eine große Anzahl von Zyklen für eine Aufgabe erforderlich ist, oder was bedeutet Zyklen hier eigentlich?

-1

1 Antwort auf die Frage

4
mtak

Kurze Antwort, da Leute ganze Bücher zu diesem Thema geschrieben haben:

Zyklen werden normalerweise mit der Terminologie "CPU-Zeit" ausgedrückt. Einem Prozess wird eine bestimmte Anzahl von 'Quantums' in der CPU zugewiesen. Beachten Sie, dass in CISC-Architekturen (wie x86) ein einzelner Befehl mehrere Zyklen beanspruchen kann.

In den einfachsten Round-Robin-Schedulern würden jedem Prozess 50% der CPU-Zeit zugewiesen (wenn es 2 gibt), so dass jede Task doppelt so lange dauert, wenn sie nur von der CPU abhängt.

Alle modernen Betriebssysteme verfügen jedoch über erweiterte Planungsalgorithmen, die einen oder mehrere der folgenden Parameter berücksichtigen:

  • Priorität
  • Zustand (für E / A gesperrt, lauffähig, gestoppt usw.)
  • Letztes Mal lief der Prozess auf der CPU

Abhängig vom Zeitplanungsalgorithmus können Prozesse auf der CPU ausgeführt werden, bis:

  • Es fordert E / A an und wird dadurch blockiert
  • Ein Prozess mit höherer Priorität benötigt CPU-Zeit ( Vorabversion )
  • Ein Hardware-Interrupt wird ausgelöst.
  • Das Prozessquantum läuft aus.

Wie die endgültige Warteschlange organisiert wird, hängt vom Scheduler ab. Der Linux-Scheduler wird hier beschrieben .

Das Nachdenken über Zyklen ist im Kontext eines Computers der realen Welt nicht wirklich nützlich. Wie oben erwähnt, kann ein einzelner Befehl auf CISC-Architekturen mehrere Zyklen dauern. Die CPU verwendet Zyklen, um zwischen Prozessen zu wechseln (Register wechseln, MMU aktualisieren usw.). Zyklen als solche sind keine wirklich gute Kennzahl, um die CPU-Nutzung zu beschreiben.

Die nützliche Ausgabe einer CPU hängt hauptsächlich davon ab, wie schnell sie mit Verarbeitungsanforderungen umgehen kann. Wenn Prozesse zur Verarbeitung bereit sind, werden sie in die Laufwarteschlange gestellt, bis sie von der CPU verarbeitet werden können. Solange Prozesse nicht länger als ein Quantum (~ 200ms) warten müssen, um ausgeführt zu werden, ist das System im Wesentlichen so schnell wie es nur geht. Im Betriebssystem wird dies als Zahl angezeigt (entweder als Float (Linux: top/ uptime) oder als Prozentzahl (Windows Taskmanager).

Um eine kurze Antwort auf die Frage zu geben, die Sie in den Titel stellen: Die Auslastung wird hoch, da die Ausführungswarteschlange ansteigt. Die "Auslastung", die Sie in Windows oder Linux sehen, ist nur ein Durchschnitt der Länge der Laufwarteschlange über die Zeit.

Danke, mtak. Bei Ihrer Antwort, dass Zyklen normalerweise mit der Terminologie "CPU-Zeit" ausgedrückt werden, sind CPU-Zyklen und CPU-Auslastung beide unterschiedliche Ausdrücke. Kannst du hier ein wenig Licht aufzeigen, was ist die CPU-Auslastung, die die Absicht dieser Frage ist? user3198603 vor 8 Jahren 0
Ich habe die Antwort aktualisiert, aber Sie stellen nicht wirklich eine bestimmte Frage. Ich gehe davon aus, dass Sie kein Experte für Computerarchitektur sind (entschuldigen Sie, wenn das nicht der Fall ist). Ich glaube, Sie stellen eine Frage, die nicht wirklich relevant ist. Ich habe alle zusätzlichen Informationen gegeben, so dass Sie mehr Einblick in und Verständnis dafür erhalten, wie ein Betriebssystem Zeitpläne abarbeitet (und wie sich dies auf die tatsächliche Leistung / Metriken bezieht, die Sie im Betriebssystem anzeigen können). mtak vor 8 Jahren 0
Hallo mtak, ich habe ein bisschen mehr Ressourcen im Netz gelesen und bekomme das Konzept, wenn die CPU-Auslastung hoch wird. Wenn ich sehe, dass die Aufgabe ausgeführt wird, wenn die CPU-Auslastung 70% anzeigt, bedeutet dies, dass die CPU in den letzten x Sekunden 70% der Zeit in x Sekunden oder nur 30% in den letzten x Sekunden gearbeitet hat. Ich verstehe es jetzt user3198603 vor 8 Jahren 1