multimolti
Software-Overclocker(in)
Hallo! Ich wollte hier mal ein Projekt starten, brauche dazu aber ein bisschen Unterstützung von euch...
Problem:
Bei einigen Leuten läuft Bad Company 2 (Frostbite-Engine) nicht so gut, wie es könnte, da die CPU nicht vernünftig ausgelastet wird. Dies passiert bei manchen Quadcores, von denen nur 2 Kerne ausgelastet werden, oder von Prozessoren mit 4 Kernen und SMT/HTT (4 virtuelle Kerne), also 8 Kernen.
Das dürfte eigentlich, laut offizieller Ansage von DICE, nicht passieren:
Theorie:
Die Frostbite-Engine erkennt beim Start die Anzahl der CPU-Kerne und optimiert dementsprechend die Anzahl benutzter Threads. Da ein i7 aber nur 4 Kerne hat, dank SMT/HTT aber 8 Threads gleichzeitig ausführen kann, erkennt die Frostbite-Engine auch nur 4 Kerne und startet dementsprechend 4 Threads. Somit bleiben die vier virtuellen Kerne ungenutzt.
Wie das Problem mit einem Quadcore und nur zwei ausgenutzten Kernen zustande kommt, wird dadurch allerdings nicht erklärt.
Lösungsansatz 1:
Verschiedene Websites und Foren behaupten, die CPU-Auslastung ließe sich durch den Startparameter "+fullproc" besser auf die Kerne verteilen.
Bei PCGHX-User D!str(+)yer hat dies jedoch nicht geholfen, wie folgender Screenshot zeigt:
Allerdings gibt es bei einem solchen System auch keine nennenswerten Performanceprobleme.
Lösungsansatz 2:
Vielleicht funktioniert die Frostbite-Engine mit nur 2 Threads einfach nicht gut, da sogar die Konsolen mehr Kerne haben (XBox 360: 3, PS3: 6). Daher könnte die Performance eventuell verbessert werden, wenn die Engine dazu gezwungen wird, mehr Threads zu benutzen, als Kerne vorliegen.
Dies würde bei dem Problem mit einem Dualcore und nur 50% Auslastung, einem Quadcore mit nur 2 benutzten Kernen und bei den Quadcores mit SMT/HTT helfen.
Weiteres Vorgehen 1:
Ich habe bisher keinen Weg gefunden, die Engine dazu zu zwingen, mehr Threads zu benutzen als sie selber möchte. Der einfache Versuch, die Umgebungsvariable NUMBER_OF_PROCESSORS zu verändern, scheint keine Wirkung gehabt zu haben, zumindest nicht bei meinem Quadcore (die Engine hat weiterhin 4 Threads benutzt).
Eventuell könnten andere mit i7s oder Dualcores das noch mal überprüfen?
Weiteres Vorgehen 2:
Um die Theorie zu überprüfen, müsste man einen Prozessor mit 8 Threads, aber auch wirklichen 8 Kernen besitzen. Da so etwas bisher nicht für normale Benutzer existiert, habe ich mir einen solchen Prozessor "gebastelt" (Virtual Box + Windows 7 + 8 CPU-Kerne + 2048MB RAM).
Das scheint soweit alles zu funktionieren, sogar die Performance in der VM mit den 8 Kernen ist annähernd bei der des echten Prozessors (1.9% Verlust).
Jetzt müsste ich da Bad Company 2 zum Laufen bringen, um die Theorie zu bestätigen.
Das ist der momentane Status des Projekts, ich würde mich über Infos von Leuten mit Performance-Problemen wegen schlechter CPU-Auslastung freuen, Screenshots und so wären super!
Falls jemand noch Ideen hat, was man versuchen könnte wäre das auch prima!
Problem:
Bei einigen Leuten läuft Bad Company 2 (Frostbite-Engine) nicht so gut, wie es könnte, da die CPU nicht vernünftig ausgelastet wird. Dies passiert bei manchen Quadcores, von denen nur 2 Kerne ausgelastet werden, oder von Prozessoren mit 4 Kernen und SMT/HTT (4 virtuelle Kerne), also 8 Kernen.
Das dürfte eigentlich, laut offizieller Ansage von DICE, nicht passieren:
Auch werden bei manchen Spielern mit Dualcore CPUs beide Kerne bei niedriger Grafikeinstellung und FPS-Zahl nur zu 50% ausgelastet. Gleiche Grafikkarten mit Quadcores erreichen deutlich höhere FPS-Zahlen, also scheint die CPU die Bremse zu sein. Warum dann beide Kerne nur zu 50% ausgelastet sind ist die Frage.DICE is very proud of the parallelized engine since 2-8 parallel threads are supported for using full capacity of a Core i7 e.g..
Theorie:
Die Frostbite-Engine erkennt beim Start die Anzahl der CPU-Kerne und optimiert dementsprechend die Anzahl benutzter Threads. Da ein i7 aber nur 4 Kerne hat, dank SMT/HTT aber 8 Threads gleichzeitig ausführen kann, erkennt die Frostbite-Engine auch nur 4 Kerne und startet dementsprechend 4 Threads. Somit bleiben die vier virtuellen Kerne ungenutzt.
Wie das Problem mit einem Quadcore und nur zwei ausgenutzten Kernen zustande kommt, wird dadurch allerdings nicht erklärt.
Lösungsansatz 1:
Verschiedene Websites und Foren behaupten, die CPU-Auslastung ließe sich durch den Startparameter "+fullproc" besser auf die Kerne verteilen.
Bei PCGHX-User D!str(+)yer hat dies jedoch nicht geholfen, wie folgender Screenshot zeigt:
Allerdings gibt es bei einem solchen System auch keine nennenswerten Performanceprobleme.
Lösungsansatz 2:
Vielleicht funktioniert die Frostbite-Engine mit nur 2 Threads einfach nicht gut, da sogar die Konsolen mehr Kerne haben (XBox 360: 3, PS3: 6). Daher könnte die Performance eventuell verbessert werden, wenn die Engine dazu gezwungen wird, mehr Threads zu benutzen, als Kerne vorliegen.
Dies würde bei dem Problem mit einem Dualcore und nur 50% Auslastung, einem Quadcore mit nur 2 benutzten Kernen und bei den Quadcores mit SMT/HTT helfen.
Weiteres Vorgehen 1:
Ich habe bisher keinen Weg gefunden, die Engine dazu zu zwingen, mehr Threads zu benutzen als sie selber möchte. Der einfache Versuch, die Umgebungsvariable NUMBER_OF_PROCESSORS zu verändern, scheint keine Wirkung gehabt zu haben, zumindest nicht bei meinem Quadcore (die Engine hat weiterhin 4 Threads benutzt).
Eventuell könnten andere mit i7s oder Dualcores das noch mal überprüfen?
Weiteres Vorgehen 2:
Um die Theorie zu überprüfen, müsste man einen Prozessor mit 8 Threads, aber auch wirklichen 8 Kernen besitzen. Da so etwas bisher nicht für normale Benutzer existiert, habe ich mir einen solchen Prozessor "gebastelt" (Virtual Box + Windows 7 + 8 CPU-Kerne + 2048MB RAM).
Das scheint soweit alles zu funktionieren, sogar die Performance in der VM mit den 8 Kernen ist annähernd bei der des echten Prozessors (1.9% Verlust).
Jetzt müsste ich da Bad Company 2 zum Laufen bringen, um die Theorie zu bestätigen.
Das ist der momentane Status des Projekts, ich würde mich über Infos von Leuten mit Performance-Problemen wegen schlechter CPU-Auslastung freuen, Screenshots und so wären super!
Falls jemand noch Ideen hat, was man versuchen könnte wäre das auch prima!