Frage von Lederlappen3, 6

CPU 10% augelastet = nur 10% Leistung?

Wenn ein Prozess die CPU zu 10% auslastet, kann man dem PC nicht sagen, dass die CPU 100% der Leistung auf den Prozess richter und er damit 10x schneller bearbeitet ist?

  • Oder ist es so, dass z.B. in nem Spiel die CPU zu 30% ausgelastet ist, weil der Prozessor einfach schneller die Daten abarbeitet, als wie er neue bekommt und man damit Prozesse nicht beschleunigen kann?
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von FaronWeissAlles, 6

Instanzierte (gestartete) Programme erzeugen einen Prozess, welcher wiederum aus Threads besteht. Innerhalb eines Threads läuft die Ausführung eines Codes sequenziell ab (nacheinander), während Threads parallel ausgeführt werden. Der Programmierer legt fest wie viele Threads das Programm nutzt und was in dem Thread dann berechnet wird. Mal ein Beispiel anhand eines Webservers: Der Programmierer könnte einen Thread erstellen in dem Anfragen entgegen genommen werden und für jede Anfrage wird dann ein neuer Thread gestartet in dem dann die Seite ausgeliefert wird bzw. berechnet (bei dynamischen Inhalten). Das ganze ist stark von der Aufgabe abhängig die das Programm bewältigt. Wie beim Hausbau auch gibt es Dinge die man parallel machen kann, andere erfordern eine Reihenfolge (du kannst nicht einrichten wenn der Rohbau noch nicht fertig ist, aber du kannst mehrere Wände parallel mauern).

Der Programmierer kann dabei nicht direkt sagen "benutze 42,7% der CPU" oder auf welchen Kernen das Programm laufen soll. Alle laufenden Prozesse und deren Threads werden praktisch in einen Topf geworfen und der CPU-Scheduler (eine der Kernkomponenten des Betriebssystems) wechselt dann dann alle paar Millisekunden die Threads die auf der CPU ausgeführt werden. Denn bei einer 1 Kern CPU kann immer nur 1 Thread zu einer Zeit ausgeführt werden, bei 4 Kern CPUs können maximal 4 Threads echt-parallel ausgeführt werden. Die anderen Threads/Prozesse laufen dann pseudo-parallel (teilen sich durch das Wechseln die CPU). Durch den Threadwechsel und die Tatsache dass Prozesse mehrere Threads haben können verteilt sich die Auslastung auf alle Kerne der CPU. Ein weiterer Effekt: ein Programm welches nicht für Multithreading ausgelegt ist und (fast) alles in einem Thread nacheinander macht (entweder weil der Programmierer das verpeilt hat oder es die Art der Aufgabe nicht anders zulässt) kann man leicht erkennen, denn dieser Prozess nutzt dann nur 1 Kern und erreicht damit 1/n der Gesamtauslastung die möglich wäre (bei einem Quadcore also maximal 25% Last), auch wenn der Prozess ständig den Kern wechselt kann er nicht mehr leisten als ein Kern hergibt.

Die CPU führt den Thread der gerade am Berechnen ist so schnell aus wie sie kann. Immer. Wenn ein Prozess nicht 100% Last verursacht kann das  verschiedene Gründe haben, z.B. weil der Nachschub an Daten nicht schnell genug geht (Festplatte ist deutlich langsamer als CPU und RAM) oder weil der Prozess gerade nicht so viel rechnen muss. Der Programmierer kann zwar nicht sagen wie schnell sein Programm laufen wird, aber er kann (und wird) einen Thread "schlafen" schicken wenn auf etwas gewartet wird oder keine weiteren Berechnungen fürs erste notwendig sind. Das kommt sehr häufig vor und ohne das würde deine CPU immer auf 100% Last sein. Die Prozentzahl berechnet das Betriebssystem aus der CPU-Zeit  und -Ressourcen die alle Threads eines Prozesses gerade benutzen. Wenn du also 30% Last bei deinem Spiel hast arbeiten manche Thread gerade, andere nicht. Keine Volllast bei Spielen bei mordernen CPUs ist gar nicht selten, da die aufwändigen Dinge an den Spielen die Grafikeffekte sind, die auf der Grafikkarte ausgeführt werden und nicht auf der CPU. Die CPU kümmert sich bei Spielen eher um Dinge wie Kollisionsberechnungen, Objektverwaltung, Physikberechnungen (hier gibts Ausnahmen wie bei PhysX wo das auch die GraKa macht), Steuerungsinputs, Spiellogik, Gegner-KI, etc, eben fast alles was nicht mit dem Rendering des Bildes zu tun hat. Und das ist gar nicht mal soo viel wie man vielleicht meint. Praktisch alle modernen Engines nutzen die Mehrkernprozessoren von heute gut aus, sodass moderne Spiele selbst auf Mittelklasse CPUs einwandfrei laufen können. Deswegen sagen ja auch alle (zurecht) dass die Grafikkarte beim Gaming wichtig ist und die CPU nur ausreichend gut dimensioniert sein muss damit sie nicht ausbremst.

Achja: Hyperthreading (das was manche Intel CPUs haben) ist ein Marketingbegriff. Hyperthreading gaukelt dem Betriebssystem mehr Kerne vor als da sind und nutzt die CPU diesbezühlich leicht besser aus. Man kanns so zusammenfassen: Innerhalb der selben CPU-Generation, Modellreihe und Architektur ist Hyperthreading besser als Nicht-Hyperthreading, aber schlechter als mehr echte Kerne zu haben. Also sowas wie ein Zwischending

Kommentar von Lederlappen3 ,

Coole Antwort vielen Dank :)

Antwort
von DrErika, 3

Die CPU wäre in einem solchen Fall nicht ausgelastet, könnte noch etwas anderes machen, nicht aber seine Energie auf den gleichen Prozess richten. Der Prozess verschlingt sicherlich noch andere Ressourcen, auf die die CPU dann erst warten muss (Daten schreiben, Grafik aufbauen, Daten laden usw.).

Antwort
von AnnaRisma, 2

Hallo Lederlappen,

nun, wenn man zwischen endlichen und dauernden Prozessen unterscheidet, merkt man schnell, dass Computer sich schon richtig verhalten.

Ein auf deinem Rechner laufender Browser belastet den Hauptprozessor zu - sagen wir mal - 10%. Und das dauernd - so lange er läuft. Welchen Sinn hätte es, die Belastung zu erhöhen? Dein Internet würde dadurch nicht schneller, dessen Geschwindigkeit hängt von anderen Faktoren ab (Übertragungsgeschwindigkeit der DSL-Leitung, Geschwindigkeit des Zugangsservers, Speed des Quellservers usw.). Klar, hübscht man seinen Browser auf oder installiert Plug-Ins, steigt auch die CPU-Belastung.

Ganz anders verhält es sich bei (auch nur vermeintlich) endlichen Prozessen; Startest du auf deinem Rechner Prime95, schnellt die CPU-Belastung sofort auf 100% (obwohl es sich letztlich auch um einen unendlichen Prozess handelt, das weiß aber der Rechner nicht. Er geht davon aus, dass das Berechnen eine endliche Aufgabe ist - für gewöhnlich ist es das ja auch).



In jedem Fall kann eine Berechnung schneller durchgeführt werden, wenn der Hauptprozessor 100% seiner Leistung aufwendet. Auch wenn es sich - wie bei Prime95 - um eine endlose Berechnung handelt. Man erhält dann eben mehr Ergebnisse pro Zeiteinheit.

Antwort
von Dingo, 2

Es gibt sowas zB. in MSE, dem Virenschutz von Microsoft aber es bringt nicht wirklich viel. Um 100% Leistung einer CPU aufzurufen muss das Programm schon alle Kerne ausreizen können. Weiter muss die CPU steuern (was nicht möglich ist)-dass Windows und alle anderen Hintergrundprogramme stillgelegt werden. Da aber Windows so programmiert ist, dass immer eine Leistungsreserve bleibt um evt. andere Programme versorgen zu können und nötige Anpassungen wie RAM-Speed wären eh nicht möglich. Man könnte evt. ein besseres Ergebnis rausholen durch Übertaktung aber sei dir sicher dass selbst ein 10fach höher getakteter Prozzi nicht viel schneller ist aber sehr wahrscheinlich nicht mit der Hitze klarkommt. Draculea hat das schon erklärt.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten