Multi-Core-Auslastung

20/05/2010 - 19:55 von Sven Sybler | Report spam
Seit ein paar Monaten habe ich eine Quadcore-CPU I5-750.

Gegenüber meinem alten P4-2,66 ist der bei Maximalauslastung aller Cores
ca. 10 * so schnell.
Die meisten Programme nutzen aber nur die Leistung eines Cores.
Genauer gesagt: Anwendungen die nichts mit Multicores anfangen können
sind ca. 2,5 mal so schnell. Das ist auch so weit ok, weil ein Core etwa
2,5* so schnell ist wie mein alter Prozessor.
Unter Win7 sind normalerweise alle Cores aktiv,man kann aber Tasks
einzelnen CPUs fest zuweisen.
Eigentlich hàtte ich angenommen, daß ein altes Programm einem Core
fest zugewiesen wird. So ist es aber nicht,die Arbeit wird auf alle
gleichmàssig verteilt.
Das heisst es gibt immer 25 Prozent Gesamtauslastung.
Egal, ob Win7 alle Cores schwach auslastet, oder auch wenn ich den Task
einem Core fest zuweise,der geht dann auf 100 Pozent Last - ergibt 25 %.

-Woher weiss der Task nun wann 25 % erreicht sind,wenn die Arbeit auf
alle Cores verteilt ist ?
-Wenn es offensichtlich möglich ist, die Aufgabe von allen Cores
parallel abarbeiten zu lassen,warum wird dann nur ein Viertel der zur
Verfügung stehenden CPU-Leistung genutzt ?

Wàre schön, wenn das jemand aufkàren könnte...

Sven
 

Lesen sie die antworten

#1 Hendrik van der Heijden
20/05/2010 - 21:21 | Warnen spam
Sven Sybler schrieb:
Eigentlich hàtte ich angenommen, daß ein altes Programm einem Core
fest zugewiesen wird. So ist es aber nicht,die Arbeit wird auf alle
gleichmàssig verteilt.



Ja. Wàr ja auch blöd sonst, wenn das Programm etwas tun will,
aber sein zugewiesener Core gerade mit etwas anderem beschàftigt
ist. Da soll's halt einen anderen freien Core nehmen, statt zu
warten bis "seines" frei wird.

Das heisst es gibt immer 25 Prozent Gesamtauslastung.
Egal, ob Win7 alle Cores schwach auslastet, oder auch wenn ich den Task
einem Core fest zuweise,der geht dann auf 100 Pozent Last - ergibt 25 %.

-Woher weiss der Task nun wann 25 % erreicht sind,wenn die Arbeit auf
alle Cores verteilt ist ?



Ein solches Programm hat nur einen aktiven Thread, der dauerhaft auf einem
Core laufen könnte. Der Windows-Scheduler ist aber so blöd, die Ausführung
des Threads etwa 60x pro Sekunde auf einen anderen Core zu verlegen.

In jedem Moment ist genau ein Core zu 100% ausgelastet, die anderen idle,
aber im Mittel (über eine Sekunde) sieht's so aus, als hàtten alle 4 Cores
25% Last.

-Wenn es offensichtlich möglich ist, die Aufgabe von allen Cores
parallel abarbeiten zu lassen,warum wird dann nur ein Viertel der zur
Verfügung stehenden CPU-Leistung genutzt ?



Ist nicht so, sieht wegen der Mittelung im Task Manager nur so aus.


Hendrik vdH

Ähnliche fragen