PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Betrug bei Mehrkernunterstützung?


Gast
2009-01-11, 17:57:07
In letzter Zeit treten vermehrt merkwürdige Phenomene auf, wenn es um die Mehrkernauslastung von Spielen und Anwendungen geht. Um nur eins von vielen Beispielen herauszugreifen: Das aktuelle Spiel Left 4 Dead von valve, welches auf der verbesserten und mehrkernoptimierten Source-Engine basiert.

Auf meinem älteren SingleCore-Rechner läuft dieses Spiel mit allen Einstellungen auf maximal absolut flüssig bei ca. 90% Kernauslastung. Da ist mir schon die Kinnlade heruntergefallen, als ich sehen mußte, wie das Spiel auf meinem E8400@3.000 bei 100% Auslastung beider Kerne so stark geruckelt hat, daß es nahezu unspielbar wurde. Besonders im 'versus' treten beim Zombierush auf MultiCore-CPUs Spielaussetzer auf, die zu sekundenlangen Screenfreezes führen.

Über sieben Ecken habe ich dann erfahren, daß es an der Mehrkernunterstützung der source-Engine liegt. Diese könne man in der ingame-Konsole mit dem Befehl mat_queue_mode = 0 abschalten. Und -oh Wunder- schon läuft das Spiel bei mir auf 2 Kernen mit nur noch 70% Auslastung genausogut wie auf meinem A64@2.000.

Ich frage mich daher, wie das kommt. Wenn es dann weniger Details hätte oder sonstirgendwo eingeschränkt wäre, würde ich sagen: Ok - da habe ich jetzt ein internes Feature abgeschaltet, so daß die CPU mehr Luft hat. - Aber so? - Ich habe den Verdacht, daß selbst aktuelle Software nicht in der Lage ist Mehrkernprozessoren auch nur ansatzweise auszunutzen. Stattdessen ist man jetzt wohl auf die Idee gekommen in die Spiele Füllprozeduren einzubauen, die dann die überschüssige Kernkraft absorbieren. Warum sollte man dies tun? - Weil in aktuellen Käseblättchen offenbar die Qualität der Mehrkernunterstützung von der Auslastung der Kerne abhängig gemacht wird. Nach dem Motto: 4 Kerne und nur 20% Auslastung... da haben die Entwickler aber ganz schön Potential liegen lassen - da wär mehr drin gewesen... :ucrazy4: Was liegt also näher als eine sinnlose Füllprozedur einzubauen, die die übrigen Kerne derweil Wolken um die Ecke schieben läßt?

Ich finde diese Entwicklung schlecht. Erstens, wird hierdurch mehr Strom verblasen und zweitens sind diese Füllroutinen auch noch so unflexibel, daß sie bei tatsächlichen Rechenspitzen den Hauptthread gegen die Wand fahren. Und alles nur, weil diejenigen, die die Engine bewerten sollen im Prinzip keine Ahnung haben: Ein Auto das bei Tempo 300 nur 3 Liter braucht kann ja nur schlechter sein als ein vergleichbares Modell, welches 30 Liter verbläst.... wahrscheinlich werden beim ersten nicht alle Zylinder optimal ausgenutzt... da hat man aber ganz schön Potential auf der Straße liegen lassen...

:mad:

Gast
2009-01-11, 20:44:58
es gibt garantiert keine zusätzlichen threads die auf den brachliegenden kernen sinnlose rechnungen machen.

multithreading ist allerdings nicht so einfach, da kann es unter umständen schon mal dazu kommen, dass irgendwelche threads ständig auf daten eines anderen warten müssen, und da die anwendung nicht steuern kann wie und wann die threads ausgeführt werden, sind derartige fehler auch nicht reproduzierbar und deshalb kaum zu finden.