cancel
Showing results for 
Search instead for 
Did you mean: 

useplatformclock is enabled by AI Suite 3, and it kills performance

Monkburger
Level 7
With my X399 Strix board, I notice after a complete OS reinstall (and reinstall of the Asus CD software) that the IOPS on my M.2 SSD were awful, nearly 75% less than the product's whitepapers have (960 EVO)

It took me a bit of time, but I tracked down to useplatformclock being enabled by AI Suit 3 in 'CheckWin8.exe'


$:~/asus/DIP5_1.04.75/AppSetup$ strings CheckWin8.exe | grep bcdedit
%windir%\sysnative\bcdedit.exe /set useplatformclock true
%windir%\system32\bcdedit.exe /set useplatformclock true


useplatformclock() switched QueryPerformanceCounty() to use HPET instead of the APIC timer, but for some reason there's a large amount of jitter from it, and it's much slower to read (probably because it needs a syscall to read HPET)

Sadly, there's no BIOS option to disable HPET and it's always available/enabled on X399.
3,504 Views
4 REPLIES 4

Cory29
Level 7
https://drive.google.com/file/d/0ByttoGNV2zOCNVRrMW15Y3c5TGM/view

this is the latest patched version that turns it off its been out since september

http://www.overclock.net/t/1636566/asus-rog-zenith-extreme-x399-threadripper-overclocking-support/40...

highly recommend not using aisuit3 as it has issues seeing fans in certain settings - causes issues with OC the cpu and memory

Cory29 wrote:
https://drive.google.com/file/d/0ByttoGNV2zOCNVRrMW15Y3c5TGM/view

this is the latest patched version that turns it off its been out since september

http://www.overclock.net/t/1636566/asus-rog-zenith-extreme-x399-threadripper-overclocking-support/40...

highly recommend not using aisuit3 as it has issues seeing fans in certain settings - causes issues with OC the cpu and memory


Yeah. I figured that out later.

Strange though, on non Windows OS's the HPET as the systimer is fine and is actually recommended compared to the APIC/LAPIC/ACPI timers because it has higher operating speeds, can be read from userland (just like the TSC), can be configured in one shot mode, etc.

Without useplatformclock(), QueryPerformanceFrequncy returns 3579545hz which is the ACPI timer (3.6mhz)

I'm still thinking there's some kind of chipset errata going on here, or a Windows timer bug. Looks like the io block system within windows uses whatever QueryPerformanceCounter() uses (which looks to be the TSC + ACPI PM on most modern systems)

yeah there is allot of guessing as to why in the overclock thread .. its only 2000+ posts of confusing and wondering why things don't work 😄

I might have figured it out.

With HPET configured, it's using that to drive interrupts on the system with TSC (I'm seeing TSC calls with HPET enabled on Windows 10). However, reading HPET on windows seems to be taking way too long compared to using the ACPI PM, not sure if this is chipset errata or Windows is just, bad.

With TSC I'm seeing 26ns/op in a loop with QueryPerformanceCounter() and RDTSC
With HPET, I'm seeing 610ns/op in a loop with QueryPerformanceCounter() and RDTSC

Using HPET, at least on X399 (and maybe others) with Windows 8/10 is 2500% SLOWER to read. This might actually get worse if you have a ton of things running like background.

I asked MS to explain the behavior of useplatformclock() but they have not answered - And filing a bug report /with/ Microsoft is nearly impossible.