10 Kerne, 20 Threads, 30 MByte Cache und Turbo
Intel Xeon E7-4870 im Test - Neue Generation mit Leistungssprung
Windows: Achtung bei 80 Threads
Bei 4-Sockel-Systemen mit x86-Prozessoren wie dem Opteron 6100 (12 Kerne) oder Xeon 7500 (8 Kerne + HT = 16) sind maximal 48 beziehungsweise 64 logische Prozessoren vom Betriebssystem zu verwalten. Mit vier Xeon E7-4870 (10 Kerne + HT = 20) stehen dem Betriebssystem jetzt aber 80 "CPUs" zur Verfügung. Als eine logische CPU wird vom Betriebssystem sowohl ein physischer als auch ein virtueller Kern, wie durch Hyper-Threading generiert, gesehen.
Unter Linux lassen sich alle 80 logischen Prozessoren von einer Anwendung nutzen. Anders stellt sich die Sachlage unter Windows Server 2008 R2 dar. Zwar unterstützt das Betriebssystem - wie auch Windows 7 - mehr als 64 logische CPUs, durch die Gruppenrichtlinien gibt es jedoch Einschränkungen bei der Thread-Zuweisung. Windows nutzt sogenannte Prozessorgruppen. In einer Gruppe lassen sich maximal 64 logische Prozessoren zusammenfassen.
Beim 4-Sockel-System mit vier Xeon E7-4870 mit 80 logischen CPUs richtet Windows automatisch zwei Gruppen ein. Es gibt eine Gruppe 0 mit 20 und eine Gruppe 1 mit 60 Prozessoren. Dass Windows keine Gruppen mit 64 (Maximum) und 16 logischen Prozessoren einrichtet, liegt an der zusätzlichen Node-Spezifizierung. So wird vom Betriebssystem ein CPU-Sockel als Node erfasst. Beim 4-Sockel-System richtet Windows Node 0, Node 1, Node 2 und Node 3 ein. Jedem Node ist in unserem Fall ein Xeon E-4870 mit 20 logischen Prozessoren zugeordnet. Durch die Gruppenrichtlinien von Windows werden immer komplette Nodes einer Prozessorgruppe zugewiesen.
Unter Windows Server 2008 R2 kann ein Prozess, wie beispielsweise java.exe, nur maximal 60 logische Prozessoren, sprich eine Gruppe, nutzen. Einem Thread lassen sich nicht beide Prozessorgruppen zuordnen. Viele Windows-Programme sind durch diese Gruppenrichtlinie auf die Nutzung von maximal 64 logischen Prozessoren ausgelegt.
Damit eine Anwendung unter Windows mehr als 64 logische CPUs nutzen kann, müssen parallel agierende Threads zusammenarbeiten. Generiert dabei ein Thread in Gruppe 0 einen neuen Thread, so wird dieser automatisch aber der Gruppe des ursprünglichen Threads zugewiesen. Hier lässt sich über eine konfigurierbare Prozessoraffinität aber regulierend eingreifen, dass die Folge-Threads die anderen Gruppen nutzen.
Laut TecChannel vorliegenden, aber von Microsoft unbestätigten Informationen, werden die Nachfolger von Windows 7 und Windows Server 2008 R2 die Beschränkung auf 64 CPUs pro Gruppe nicht mehr besitzen.