Optimierung: AMD Ryzen Threadripper

java4ever

Kabelverknoter(in)
Seid gegrüßt, werte Forengemeinde.

Ich habe mit dem Benutzer gaussmath ein paar Experimente durchgeführt, da wir beide auf dem TR Software entwickeln...

Getestet wurde die Latenz um Daten von einem Thread auf einen anderen zu schieben.

Dabei fiel uns die EXTREM hohe Latenz auf. Durch Zufall haben wir beim Telefonieren gemerkt, dass der HPET bei mir noch aktiviert war.
Gesagt, getan: HPET ist ein Graus.
Im folgenden ein paar Messwerte:

Distributed, 16C/32T, HPET on:
Query Performance Counter 14.31818 MHz
Latenz Random: 363.5
Latenz 1-1: 81, 110
Latenz 1-2: 184, 212
Latenz 1-17: 138 - 2074 - 551,5 - 416

Distributed, 16C/32T, HPET off
Query Performance Counter 3.31409 MHz
Latenz Random: 52-51-53-51
Latenz 1-1: 14-14-14-14
Latenz 1-2: 17-17-17-17
Latenz 1-3: 18-18-18-18
Latenz 1-17: 58-48-16-48

Distributed, 8C/8T, HPET Off
Query Performance Counter 3.31409 MHz
Latenz Random: 48 - 61 - 428 - 48
Latenz 1-1: 17-14-17-17
Latenz 1-2: 33-42-44-42
Latenz 1-8: 45-355.5-47-379

Local, 8C/8T, HPET Off
Query Performance Counter 3.31408 MHz
Latenz Random: 46-26-46-27
Latenz 1-1: 13-13-13-13
Latenz 1-2: 28-28-28-28
Latenz 1-8: 46-46-46-46

Erkennbar ist also eindeutig:
Der HPET zerstört das Cache Management mal so richtig.
Weiter zu erkennen: Local senkt die Latenzen massiv.
Außerdem erkennbar:
Bei SMT an:
1-1: Selber logischer Kern, 1-2: Selber physischer Kern, 1-3: Verschiedener Physischer Kern, Latenz spielt mit
1-17: Anderes Die
Bei SMT aus:
1-1: Selber physischer Kern, 1-2 Verschiedener Physischer Kern, 1-8: Anderer CCX, selbes Die

Hoffe, das hilft euch.

Verwendete HW:
AMD Threadripper 1950X
Asus ROG Zenith Extreme
4x G.Skill RipJaws V 3200MHz CL14 16GB (getaktet: 1.35V, 3200MHz, 14-14-14-34)

Beste Grüße!

P.S. Hat noch jemand Kaltstartprobleme mit Memory Mode = local?? Ich muss immer den Retry Button bemühen!
 
Sehr schöne Zusammenfassung! Ich wollte noch erwähnen, dass die CPU Ticks bei meiner eigenen Testapp mit VS 2017 erstellt von über 250 auf unter 30 gefallen sind mit HPET Off. Falls jemand die Software haben will, bitte bescheid sagen. Die Testapp schickt Datenpakete von Thread A nach B und misst die Ticks bis zu Bereitstellung.
 
Hallo.

Merkt man die hohe Latenz an den Wartezeiten, wenn ich z. B. ein Programm aufrufe?
Wo kann ich sehen, ob ich HPET aktiviert habe?

Gruß
Daniel
 
Zuletzt bearbeitet:
Hallo.

Merkt man die hohe Latenz an den Wartezeiten, wenn ich z. B. ein Programm aufrufe?
Wo kann ich sehen, ob ich HPET aktiviert habe?

Gruß
Daniel

Auf zwei Arten. zu einem aktiviert man diesen am Bios, damit ist der CPU in der Lage HPET zu nutzen. Allerdings muss man das in Windows Manuell Aktivieren udn oder Deaktivieren. Um es also Komplett zu Deaktivieren sollte man es sowohl über WIndows als auch über BIos vom Board machen. Das selbe natürlich auch wenn man es aktivieren will.

Ich habe damals ein Programm gefunden das heist SwitchHPET damit kann man HPET in Windows ganz einfach Aktivieren, oder HPET von Windows löschen.
Zum Prüfen gibts ein Programm welches den Namen WinTimerTester hat.

Da ich nciht weiß ob man das noch findet, habe ich mal beide Programme in eine .zip gepackt.

(ich mit einem Ryzen 2700 habe mit Aktivierten HPET beim WinTimerTester 14.31818 Mhz stehen.
Deaktiviert steht dieser bei 3.12507 Mhz. Denke daran kann man es ganz gut erkennen, ist auch nahe an dem was der Threadripper oben listet.
 

Anhänge

  • HPET Windows.zip
    14,3 KB · Aufrufe: 61
Im BIOS habe ich es jetzt ausgeschaltet.
Muss ich dann in SwitchHPET auch noch was ändern?

hpet_tr1920x_001-jpg.1020346
 

Anhänge

  • HPET_TR1920X_001.JPG
    HPET_TR1920X_001.JPG
    50,4 KB · Aufrufe: 462
Ich gehe davon aus das du WIndows 10 benutzt daher kann ich dir dazu nciht viel sagen. Ich weiß das HPET von hause aus darüber deaktiviert ist. Zumindest bei Älteren versionen von Windows. Deinem wert zu folge sollte es komplett deaktiviert sein.
 
Ich schreibe doch nochmal was dazu.
Scheinbar sieht es so aus, als wenn HPET über Windows 10 automatisch aktiviert ist.

Habe ich HPET über Windows und Bios Aktiviert, bekomme ich einen Wert von 14.xxxxMhz.
Ist HPET im Bios Deaktiviert aber in Windows Aktiv, komme ich auf einen Wert von 3.3xxxxxxMhz
Ist es im Bios und auch in Windows Deaktiviert, so steht da ein Wert mit 3.1xxxxx Mhz.

Da soweit alle Ergebnisse gleich sind, zu Threadripper, gehe ich davon aus dass die Windows 10 Versionen automatisch HPET aktiviert haben.
Dies bezüglich mal ein Screenshort von mir, wo alles Deaktiviert ist, was HPET betrifft.
Ich habe über SchwitchHPET nur die obere Einstellungsmöglichkeit, liegt vielleicht an Windows 7.
Heißt andere könnten eventuell alle Punkte Verwalten. (Das Programm zeigt automatisch alles auf Yes, also nicht vom Bild Irritierenh lassen weil "no" da steht).
Werte ändern, auf No und dann auf Set drücken. Danach sit ein Neustart nötig.
Die Zip datei, welche die Programme beinhaltet ist etwas weiter oben. (Für jene die erst später auf dieses Thema kommen).

(Achtung! Das Bild ist von Windows 7. Das Betriebssystem ändert nichts an den Werten! Zumindest Windows Systeme betreffend.)
Andere Ryzen Prozessoren, können andere Werte haben. Diese sollten aber nicht so weit auseinander gehen!
 

Anhänge

  • HPET Deaktiviert.png
    HPET Deaktiviert.png
    25,2 KB · Aufrufe: 60
Zuletzt bearbeitet:
Würd das Programm zum testen gerne haben wenn du mir das zukommen lassen könntest.

Gibt's denn auch abseits von "benchmarks" Anwendungen die merklich von den gesenkten latenzen profitieren bzw. Anwendungen die hpet zwingend benötigen?
Außer zocken benutz ich eigentlich nur Matlab da müsst ich mal schauen ob Hpet nicht für irgendein plugin benötigt wird.
 
Also wie gesagt, weiter oben ist die .zip datei von mir gepostet worden. War sogar der erste Post von mir in dem thema.

HPET hatte bei älteren Prozessoren die eigenschaft gut für Multimedia anwendungen zu sein. In einigen Spielen hatte es eine höhere FPS zahl ermöglicht. in anderen wiederum das gegenteil,oder eben auch gar nichts von beiden. Also fast wie Nvidias Cuda in spielen. xD

Mit Ryzen, ist dies aber nicht mehr so. Hier Profitiert jedes Programm ausnahmslos von kürzeren Latenzen.
Also egal ob Spiel, Rendern, Bildbearbeitung etc. Auch media Aufgaben sind zwar was das angeht meist nicht so davon betroffen, aber auch die können von kurzeren Latenzzeiten Profitieren. Dabei denke ich jetzt mal an Streaming in erster Linie.

Weil gerade auch da im Hintergrund meist mehr, als nur ein Stream Programm läuft. Einfache Musik Anwendungen, zum wiedergeben oder erstellen von Musik stücken, ist HPET eigentlich egal ob es an oder aus ist. Video Rendering wiederum ist eine Prozessor sache, und kann daher von geringeren Latenzen Profitieren.

HPET wird also nicht zwingend von einem Programm benötigt. Es ist seit Windows 10 Automatisch aktiviert wie es scheint. Davor musste man es mit Tools extra aktivieren in windows um es zu nutzen. Und auch im bios war es selten als standard aktiviert.

Daher sollte erwiesen sein, es gibt kein Programm das auf HPET angewiesen ist um zu funktionieren.
(Eigentliches ziel von HPET war es gewesen geringere Latenzen her zu zaubern). Was bei Ryzen nicht funktioniert. Und bei Intel keine ahnung. xD

Eine Anwendung wo man den Unterschied merklich sieht, kann ich nicht nennen. Ich hatte aber den eindruck als HPET nur in windows Aktiviert war, das Admin fenster ob ich Programm xyz wirklich starten will, so eine art hänger verursacht hat. Seit deaktivierung scheint das flinker zu gehen. Auch wenn es sich vielleicht nur um wenige millisekunden handelt.

Keine ahnung was MatLab macht. Scheint ein Spezielle Programm zu sein, und nicht für jeder mann. In der Regel ist der Grundsatz egal bei was, je weniger latenzzeiten gebraucht werden um so besser. Allerdings gibts wohl auch kaum eine Liste von Programmen die vielleicht von HPEt Profitieren. Wenn der Prozessor vom hause aus schon lange braucht, um Informationen vom Ram zu erhalten, und oder auf dem Kernen zu verarbeiten, ist es eigentlich relativ ob das Programm davon Profitieren würde oder nicht.

Die latenzzeiten vom themen ersteller, sprechen ja eigentlich für sich.
(Ein rechen Beispiel):
Wenn der Prozessor schon 368 ms auf infos warten muss, dann kann ein Programm das vielleicht 20% von HPET Profitiert immer noch länger brauchen als ohne. 368:20*100=73,6 ms. 368ms - 73,6ms = 294,40 ms. Also ein Programm das davon Profitieren würde, könnte dann immer noch ca. 295ms brauchen. Mit deaktivierten HPET wäre es also beim Ryzen immer noch deutlich schneller. xD

(Dazu noch das als schnell erklärung) : High Precision Event Timer – Wikipedia
Beim ryzen aber hinfällig). xD
 
Zuletzt bearbeitet:
Alles klar danke für die ausführliche Antwort, die zip Datei hat ich total übersehen.

Ich probiers einfach mal aus sobald ich zu komme :)
 
Zurück