"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Intel X299 HPET Bug sorgt für Performance-Probleme

mat 23.07.2017 82893 70
Als hätte Intel nicht schon ausreichend Probleme mit den VRMs von X299, gesellt sich nun ein weiterer Fehler hinzu: Die neue High-End-Plattform für Kaby Lake X und Skylake X kommt mit dem High Precision Event Timer (HPET) nicht zurecht. Sobald der Präzisions-Timer in Windows 10 aktiviert wird, zeigen sich Performance-Probleme aller Art. Am auffälligsten sind die Framerate-Einbußen in Spielen, es kommt aber auch teilweise zu einer trägeren Darstellung von UI-Elementen auf dem Desktop. Wir haben den "X299 HPET Bug" in einem Video festgehalten und zeigen euch, wie er behoben werden kann.

Weshalb der Timer die Performance beeinflusst, konnten wir noch nicht herausfinden. Fest steht, dass die Grafikkarte in zahlreichen Spielen nicht mehr vollständig ausgelastet wird. Die GPU kommt speziell bei niedrigeren Auflösungen wie 1920x1080 selten über eine Auslastung von 50%, obwohl es keinen offensichtlichen Grund dazu gibt. Unsere Vermutung lautet, dass die Abfrage des HPET-Timers (meist über die Win32-Funktion QueryPerformanceCounter in Spielen zu finden) zu lange dauert und dadurch die CPU blockiert wird und nicht ausreichend API-Calls für höhere Frameraten abarbeiten kann, um die Grafikkarte vollständig zu beschäftigen.

In unseren Tests besteht das fehlerhafte CPU-Bottleneck sowohl bei einem i7-7740X (Kaby Lake X mit 4C/8T), als auch beim derzeitigen Topmodell von Skylake X, dem i9-7900X (10C/20T). In folgendem Video zeigen wir den Einfluss des HPET-Bugs auf The Witcher 3, Doom (2016), Project CARS und The Division. In der ersten Zeile des Overlays seht ihr die GPU-Temperatur, die Auslastung und die GPU-Taktrate, die letzten vier Zeilen zeigen die Taktraten und die Auslastung aller CPU-Kerne. Diese Informationen sollen zeigen, dass die CPU nicht im herkömmlichen Sinne das Bottleneck darstellt, sondern es sich tatsächlich um einen Fehler handelt. Anschließend wird im Video gezeigt, wie der High Precision Event Timer in Windows deaktiviert werden kann.

Intel X299 HPET Bug sorgt für schlechte Framerates in zahlreichen Spielen.


Wie im Video gut ersichtlich ist, wirkt sich der Bug unterschiedlich stark auf die Framerate aus. In Project CARS verlieren wir gerade mal 15 Frames pro Sekunde, während wir in Doom unter Vulkan gleich um die 100 Frames einbüßen müssen, aber trotzdem flüssig bleiben. The Witcher 3 wird mit um die 30 FPS quasi unspielbar, dasselbe Schicksal ereilt The Division. Das könnte davon abhängig sein, wie oft eine Timer-Messung im Spiel durchgeführt wird und wie CPU-lastig das Spiel ingesamt ist.

Der Vollständigkeit halber halten wir hier auch schriftlich die Schritte fest, um den High Precision Event Timer zu deaktivieren:

Schritt 1: Command Line als Administrator öffnen
Schritt 2:
Code:
bcdedit /set useplatformclock no
Schritt 3: Neustart durchführen

In den nächsten Tagen werden wir uns noch genauer anschauen, weshalb der Fehler zustande kommt und hoffen bis dahin auch auf ein Statement von Intel.

Update, 24.7.2017

Für die Suche nach der Ursache des X299 HPET Bugs haben wir uns ein kleines Windows-Tool geschrieben. Das Tool bestätigt unsere Vermutung: Der Aufruf von QueryPerformanceCounter() dauert zu lange und blockiert mit seinen Aufrufen die CPU. Schaut euch folgende Gegenüberstellung eines i9-7900X auf 4,5 GHz (Skylake X) und eines i7-6950X auf 3,8 GHz (Broadwell-E) an:


Wie sich auf den Screenshots erkennen lässt, schafft Skylake X nur 200.000 Aufrufe der QueryPerformanceCounter-Funktion pro Sekunde, während Broadwell-E auf über 1,46 Millionen kommt. Das zeigt, dass auf der X299-Plattform etwas mit dem High Precision Event Timer nicht stimmen kann.

Update, 25.7.2017

Wir haben ein Tool für das Testen und Deaktivieren des High Precision Event Timers entwickelt. Es soll euch dabei helfen, schnell und einfach herauszufinden, ob euer System vom HPET Bug betroffen ist. Bei Bedarf gibt das Tool eine Empfehlung für die Deaktivierung des HPET ab und lässt diese auch mit einem simplem Klick auf einen Button durchführen.

Anleitung:

  1. Downloaden, entpacken und "Launch HPET.bat" ausführen (startet automatisch je nach Betriebssystem HPET32.exe oder HPET64.exe).
  2. Sollte eine Fehlermeldung mit einer vermissten DLL auftauchen, dann fehlt die Visual Studio 2015 Redistributable (vc_redist.x86.exe für 32 bit, vc_redist.x64.exe für 64 bit).
  3. Auf "Run Test" klicken, ein paar Sekunden warten und dann auf "Stop Test" klicken.
  4. Jetzt sollte ein Sätzchen als Empfehlung auftauchen (bei Result).
  5. Wenn es empfohlen wird, dann auf "Disable HPET" klicken und den Neustart bestätigen.

Download: HPET 0.3 (4,1 MB)


Wir freuen uns über euer Feedback! :ghug:
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz