NEWS

Mehr Leistung

NUMA-Optimierung für Ryzen Threadripper 2990WX und 2970WX

Portrait des Authors


NUMA-Optimierung für Ryzen Threadripper 2990WX und 2970WX
62

Werbung

Die beiden Modelle Ryzen Threadripper 2990WX und Ryzen Threadripper 2970X sind echte Multicore-Arbeitstiere. Doch eine Konfiguration aus vier Dies hat auch so ihre Probleme, die je nach Anwendung zum Tragen kommen. Um dem entgegen zu wirken hat AMD den Dynamic Local Mode entwickelt. Doch dieser ist wenig flexibel und kann zudem auch noch zu Problemen führen, die durch eine Software namens Coreprio beseitigt werden sollen.

Doch noch einmal zum Dynamic Local Mode: Der Dynamic Local Mode ist eine Softwarelösung, die den anspruchsvollsten Anwendungen automatisch die CPU-Kerne zuweist, die direkt an den Arbeitsspeicher angebunden sind. Genutzt werden kann dieser Modus aber ausschließlich auf Threadripper-Modellen mit vier Dies, also auf dem Ryzen Threadripper 2990WX (Test) und dem Ryzen Threadripper 2970WX (Test).

In diesem Zusammenhang kommen dann die Begriffe NUMA und UMA ins Spiel. Der Non-Uniform Memory Access (NUMA) beschreibt eine Speicherarchitektur, bei der jeder Prozessor einen eigenen, lokalen Speicher hat, aber anderen Prozessoren über einen gemeinsamen Adressraum direkten Zugriff darauf gewährt. Uniform Memory Access (UMA) wiederum beschreibt eine Speicherarchitektur, bei der nur ein Speicher vorhanden ist, auf den von allen Prozessoren aus einheitlich zugegriffen werden kann. Im Falle eines Ryzen-Threadripper-Prozessors bedeutet dies, dass im UMA-Modus beide Dies auf alle Speicherkanäle zugreifen können, die Speicherbandbreite demnach optimal ist, die Latenzen aber einen gewissen Mittelwert bilden – also je nach Zugriff mal besser und mal schlechter sind. Im NUMA-Modus hingegen bleiben die Daten im Speicher, der über den jeweiligen Speichercontroller des Dies angebunden ist. Daraus ergeben sich die niedrigsten Latenzen, aber die Bandbreite ist nur halb so hoch.

Theoretisch am besten wäre es, der Software den NUMA-Status des Prozessors aufzuzeigen. Windows 10 sollte dies erkennen und sieht die beiden Dies als getrennte Entitäten mit jeweils eigener Speicherverwaltung an. Allerdings ist bisher kaum eine Endanwendersoftware darauf angepasst und dementsprechend kann mal NUMA und mal UMA schneller sein.

Die Zuweisung erfolgt über den Windows Scheduler, der allerdings nur zwei NUMA-Knoten kennt, die Ryzen-Threadripper-Prozessoren verwenden aber vier aktive Dies und dementsprechend auch vier NUMA-Knoten. Damit kommt der Scheduler offenbar nicht zurecht, was je nach Anwendung zu Problemen führen kann.

Hier kommt nun die Coreprio getaufte Software ins Spiel. Als NUMA Dissociater überwacht die Software alle aktiven Threads und legt diese im Falle der Ryzen-Threadripper-Prozessoren auf die NUMA-Knoten mit direkter Speicheranbindung. Die Zuweisung der einzelnen Threads im jeweiligen Die erfolgt wieder über den Windows Scheduler.

In Coreprio kann der Nutzer festlegen, ob der Service der Neuzuweisung gestartet oder gestoppt wird. Außerdem kann der Zeitabstand festgelegt werden, in dem die Threads überwacht werden. Auch der Dynamic Local Mode lässt sich direkt aus Coreprio heraus starten und etwas anpassen. Für den NUMA Dissociater sollte der Dynamic Local Mode aber deaktiviert werden. Je nach Anwendung kann sich die Leistung eines Systems mit Ryzen Threadripper 2990WX und Ryzen Threadripper 2970X verdoppeln. In anderen Anwendungen ist aber auch gar kein Unterschied festzustellen.

Es ist durchaus möglich, dass die NUMA-Dissociater-Erweiterung ihren Weg in den Dynamic Local Mode bzw. die Ryzen-Master-Software findet.