Hallo Leute, ich habe ein kniffliges Performanceproblem, zu dem ich bisher keine brauchbaren Infos gefunden habe.
Bei mir läuft ein OpenGL Programm unter WinXP32 auf einer NVidia Karte. Das Programm hat nur einen User Mode Thread, im Task Manager werden aber 2 Threads angezeigt (jeweils 70-100 % Auslastung pro Core). Offenbar hat der NVidia Treiber einen eigenen Kernel Mode Thread. So weit, so gut.
Auf einem Core 2 Quad gibt es bekanntlich 2 DualCores. Wenn ich das Programm auf diesem QuadCore laufen lasse, gibt es erhebliche Performance Unterschiede, je nachdem, ob es auf Core 0+1 läuft oder auf Core 0+2. Das ist auch verständlich, da Core 0+1 auf demselben DualCore sind und intern kommunizieren, während Core 0+2 auf zwei verschiedenen DualCores sind und extern kommunizieren müssen.
Bei den neuen Core i5/i7 gibt es nun welche mit und welche ohne Hyperthreading. Dieses Hyperthreading ist schön, wenn man 8 Threads am Laufen hat. Wenn aber nur 2 Threads laufen, besteht die Gefahr, daß WinXP diese beiden Threads auf einem einzigen Core laufen läßt. Dadurch wird das Programm merklich langsamer.
Hat schon jemand Erfahrungen oder einen Link zu diesem Thema "Hyperthreading auf MultiCore"?
Bei mir läuft ein OpenGL Programm unter WinXP32 auf einer NVidia Karte. Das Programm hat nur einen User Mode Thread, im Task Manager werden aber 2 Threads angezeigt (jeweils 70-100 % Auslastung pro Core). Offenbar hat der NVidia Treiber einen eigenen Kernel Mode Thread. So weit, so gut.
Auf einem Core 2 Quad gibt es bekanntlich 2 DualCores. Wenn ich das Programm auf diesem QuadCore laufen lasse, gibt es erhebliche Performance Unterschiede, je nachdem, ob es auf Core 0+1 läuft oder auf Core 0+2. Das ist auch verständlich, da Core 0+1 auf demselben DualCore sind und intern kommunizieren, während Core 0+2 auf zwei verschiedenen DualCores sind und extern kommunizieren müssen.
Bei den neuen Core i5/i7 gibt es nun welche mit und welche ohne Hyperthreading. Dieses Hyperthreading ist schön, wenn man 8 Threads am Laufen hat. Wenn aber nur 2 Threads laufen, besteht die Gefahr, daß WinXP diese beiden Threads auf einem einzigen Core laufen läßt. Dadurch wird das Programm merklich langsamer.
Hat schon jemand Erfahrungen oder einen Link zu diesem Thema "Hyperthreading auf MultiCore"?