blub123a Geschrieben 3. Juli 2009 Teilen Geschrieben 3. Juli 2009 Hallo zusammen, ich hoffe mir kann hier jemand weiterhelfen. Wie erklärt man richtig, was eine CPU Auslastung von z.Bsp. 28% bedeutet? Google liefer mir nur Ergebnisse "Meine CPU Auslastung beträgt 100% was soll ich machen?" Die Wikipedia Erklärung . Sie gibt an, welchen Anteil seiner Arbeitszeit der Prozessor tatsächlich produktive Aufgaben bearbeitet. Würde demnach bedeuten: Die CPU hat 28% der Arbeitszeit Aufgaben bearbeitet. Allerdings wird dort weiter erklärt: In einem Multitasking-System muss zwischen den einzelnen ablaufenden Prozessen laufend umgeschaltet werden. Dieses Umschalten führt zu einer Belastung des Prozessors. Während der Umschaltzeit kann der Prozessor keine produktiven Prozesse ausführen. Hat dieses Umschalten Einfluss auf die % Angabe der CPU Auslastung? Oder bedeutet das Umschalten einfach eine gewisse Zeit, die für Prozesse nicht mehr zur Verfügung steht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Juli 2009 Teilen Geschrieben 3. Juli 2009 Vielleicht erstmal zum Multitasking: Du würdest im Idealfall eine Anwendung starte, die 100% den CPU auslastet. Nun startest Du eine zweite Anwendung, die ebenfalls wenn sie alleine läuft den CPU zu 100% auslastet. Dein CPU kann aber nicht mehr als 100% Leistung bringen, d.h. das Multitasking macht folgendes: Anwendung 1 läuft eine gewisse Zeit (meistens eine Anzahl von Taktzyklen), dann wird sie pausiert und die kompletten Daten zwischen gespeichert, Anwendung 2 wird aus der Pause aufgeweckt und ihre Daten werden nun in den Speicher transferiert und einige Taktzyklen verarbeitet, dann wird sie pausiert und Anwendung 1 wird aufgeweckt usw. Jede Anwendung lastet wenn sie aktiv läuft den CPU entsprechend aus, in unserem Fall zu je 100%, aber eben nie zur gleichen Zeit. Achtung, die Erklärung ist so sehr vereinfacht, in der Realität ist das komplizierter, da z.B. ja auch Zeit für das Restaurieren und Auslesen der Daten benötigt wird. ----- und dann zur Auslastung: Wenn ich nun sage, dass jede gestartete Anwendung eben immer eine feste Anzahl an Zyklen, die sie arbeiten darf, zur Verfügung hat, dann kann ich auch die Auslastung berechnen. Z.B. Du hast insgesamt ein Zeitintervall von 100 Zyklen, die Du an Deine gestarteten Anwendungen verteilen kannst. Der Extremfall ist, wenn Du jetzt 100 Anwendungen startest und jede Anwendung darf immer einen Zyklus beanspruchen, dann hast Du 100% Auslastung. Wenn Du eben nur 10 Anwendungen laufen hast, dann hast Du 10% Auslastung des CPU. ---- Ich hoffe, das ist so verständlich. Aber noch einmal der Hinweis, dass ist jetzt alles sehr stark vereinfacht ausgedrückt und dadurch, wenn ich es sehr "hart bewerte" falsch. Du hast in einem heutigen System sehr viele Prozesse (Threads), die irgendwelche Aufgaben übernehmen. Jeden Prozess kann man priorisieren, d.h. er kann mehr oder weniger CPU Berechnungszeit bekommen bzw anfordern, das wirkt sich ja alles auch noch aus. Anwendungen bestehen heute nicht mehr aus einem Prozess, sondern wie z.B. beim Browser werden zum Laden einer Seite eine Vielzahl von Threads benutzt, die dynamisch zur Laufzeit erzeugt werden. So etwas müsstest Du noch alles berücksichtigen. HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blub123a Geschrieben 3. Juli 2009 Autor Teilen Geschrieben 3. Juli 2009 Hallo Phil, danke für deine Erklärungen. Nur nochmal zum Verständnis: ein Zeitintervall von 100 Zyklen, 2 Anwendungen sind aktiv. Jede Anwendung darf 14 Zyklen beanspruchen. Dann hätte ich für dieses Intervall meine 28% Auslastung oder? Bei Threadwechseln beschäftigt sich die CPU ja nicht mit der Ausführung von Threads der Anwendungen. Fällt hierfür auch "Last" für die CPU an? D.h. 28% + x% für den Wechsel von Anwendung 1 zu Anwendung 2. Könnte man es auch so formulieren: CPU Auslastung = wieviel % des letzten gemessenen Intervalls hat sich die CPU mit Ausführung der Threads beschäftigt? Bei meinem Beispiel mit 28%, würde da beim Leerlaufprozess 72% angezeigt werden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Juli 2009 Teilen Geschrieben 3. Juli 2009 Schau Dir mal das Bildchen bei dem Wiki Artikel an Thread (Informatik) ? Wikipedia Nur nochmal zum Verständnis: ein Zeitintervall von 100 Zyklen, 2 Anwendungen sind aktiv. Jede Anwendung darf 14 Zyklen beanspruchen. Dann hätte ich für dieses Intervall meine 28% Auslastung oder? Jain, ich habe einfach ein paar Zahlen genommen, damit es verständlicher wird. Das ist nicht extremst vereinfacht. Bei dieser Betrachtung würdest die Anwendung aus einem Thread bestehen und das Betriebssystem selbst ist nicht berücksichtigt. Zusätzlich gehört auch noch ein gewisser Verwaltungsaufwand des Betriebsystem dazu oder auch die Möglichkeiten der Signalisierung von Interrupts durch die Hardware Bei Threadwechseln beschäftigt sich die CPU ja nicht mit der Ausführung von Threads der Anwendungen. Fällt hierfür auch "Last" für die CPU an? D.h. 28% + x% für den Wechsel von Anwendung 1 zu Anwendung 2. Natürlich (siehe oben). Aber auch hier gilt, dass ist alles für Dich auf ein Minimum vereinfacht, denn in den heutigen System hast Du mehrere Cores (z.B. IntelCore2Duo). Da hast Du zwei unabhängige CPUs, die aber unter Umständen auf die gleichen Resourcen zugreifen bzw die Anwendung auf mehreren Cores parallel laufen kann (siehe z.B. Message Passing Interface ? Wikipedia). Ein konkretes Bsp: Eine Anwendung läuft auf 2 Cores mit je 4 Threads pro Core. Z.B. kann jetzt CPU 1 mehr ausgelastet sein als CPU 2, dann kann das OS unter Umständen nun auch die Auslastung entsprechend verändern, so dass die beiden CPU ansatzweise immer gleich viel Arbeit leisten. Könnte man es auch so formulieren: CPU Auslastung = wieviel % des letzten gemessenen Intervalls hat sich die CPU mit Ausführung der Threads beschäftigt? Bei meinem Beispiel mit 28%, würde da beim Leerlaufprozess 72% angezeigt werden? Nein definitiv nicht, denn so eine Aussage ist definitiv nicht korrekt und auch nicht vollständig. Hier mal der Auszug aus meiner aktuellen Auslastung auf einem OSX: Processes: 85 total, 3 running, 3 stuck, 79 sleeping... 347 threads Load Avg: 0.57, 0.57, 0.44 CPU usage: 21.68% user, 7.52% sys, 70.80% idle Dagegen einmal die Auslastung eines Servers mit 2 Xeon CPUs mit insgesamt 8 Cores: Tasks: 173 total, 1 running, 172 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Du siehst da schon immense Unterschiede. Das Beispiel ist nur für eine Erklärung gut, für eine reale Betrachtung ist es völlig ungeeignet. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.