Ich habe gerade einen neuen 16-Core-Server mit AMD 6212-Prozessoren bekommen. Ich habe Code, den ich auch auf einer Vielzahl von Intel-Prozessoren ausgeführt habe. Er verwendet gesperrte Warteschlangen, um die Arbeit an pthreads zu verteilen, die dann die Arbeit zurück in den gemeinsamen Speicher schreiben, wobei auch die Schreibvorgänge gesperrt sind. Ich bin primär rechengebunden.
Bei Intel-Prozessoren steigt die Leistung sofort, wenn ich die Anzahl der Threads erhöhe. Wenn ich von 1 auf 2 Threads gehe, verdoppelt sich die Leistung fast.
Mit demselben Code auf den AMD-Prozessoren erhalte ich auch mit 4 Threads keinen Gewinn (eine leichte Verlangsamung). Aber wenn ich 128 Threads verwende, sehe ich einen 6-fachen Geschwindigkeitszuwachs.
Hat jemand eine Idee, woran das liegen könnte?
Was die Spezifikationen des Betriebssystems betrifft, so tippe ich:
cat /proc/version
Ich verstehe:
Linux version 2.6.32-5-amd64 (Debian 2.6.32-39) (dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Thu Nov 3 03:41:26 UTC 2011