HPET, or High-Precision Event Timer is a hardware timer. I myself am not entirely sure on specifics however, but on some motherboards, HPET may be implemented in a poor way, resulting in microstuttering and overall higher latency with input actions.
Disabling HPET will result in Windows falling back to another timing method. Commonly, this alternate timing method would be based on the CPU Clock. This may work great for some people, but if your overclocking, this can lead to “off” timings.
How do you know if you have HPET enabled or disabled and whether or not it would benefit from being toggled? There’s some programs that will be able to tell what timing method your currently using. I have a small zip package that contains some timing tools:
http://puu.sh/24rYf
VirusTotal: https://www.virustotal.com/en/file/3deebbd5076ede12f06199ea76e53b779b1302b7d03dad9ebbac203f04fa04be/analysis/
What do the tools in that package do?
dpclat – Calculates DPC latency
HPET2 – Reports whether HPET or CPU Clock is in-use
WinTimerTester – Reports how “correct” your timing method is
So, lets start with dpclat. Running it for a bit should give you an average reading on your DPC latency:
http://puu.sh/24s4g.jpg
Ideally, you want it to be consistently low. DPC latency can be affected by a few things though, most notably drivers, and the timing method in-use. If you have consistent spikes to high latency, there is likely a “bad” driver on your system. You can try temporarily disabling non-essential devices in Device Manager to find the problematic device (in most cases it is the Network adapter). A good idea to fix the problematic device is to simply update the driver. More info here:
http://www.thesycon.de/deu/latency_check.kittenml
Now, onto HPET. You may want to disable it to improve DPC latency, microstutters, and overall input latency. There is no sure answer as to whether this will be helpful or not, so your best bet is to just dive in and try it.
You should first disable HPET from the BIOS. Some BIOS’s offer a clear option for HPET, while others either do not, or just don’t have the option period. This will require some research on your end, but as a tip for BIOSTAR motherboard owners, disable SRAT Tables and lower the ACPI level to 1.0
If your unable to adjust HPET from BIOS, you can still disable it from the OS and benefit. You should run HPET2 from my package above to first verify whether HPET is enabled or not. It will clearly let you know whether it is or not, but as a general rule, a clock speed of 3.4MHz or 3.5MHz is CPU, while 14MHz is HPET.
http://puu.sh/24seM.jpg
If HPET is enabled, you can disable it by going to an Administrative Command Prompt and entering: bcdedit /deletevalue useplatformclock
http://puu.sh/24shn.jpg
- It should say successful, but it failed for me since I already did it
- Doing this will require a reboot
Once you do that, you should then re-run HPET2 to see if the result changes to CPU Clock. If it does, then you have successfully disabled HPET. If it does not, then your BIOS is likely forcing the option still.
Now you will probably want to test out your timings to see if not using HPET is actually any good in the long run. This is where WinTimerTester comes in.
You want the ratio to reach 1 in the shortest amount of time. I only get 0.9 after 60 seconds, which seems alright. If you never reach 1, or if it takes a significant amount of time to do so, have no fear, as this may not be too bad.
At this point, you should now head back into dpclat and see if your DPC latency is any better (lower). The level of difference will vary, but it’ll either be barely any change, no change, or significant.
You’ll now pretty much want to just run some games, do basic tasks, and etc. just to see if you notice any performance increases.
Notes:
- Advice taken from: http://www.neowin.net/forum/topic/1075781-tweak-enable-hpet-in-bios-and-os-for-better-performance-and-fps/
- Using dpclat in Windows 8 will likely always report latency times at 1000. This is a bug in the program, and is not to be regarded.
- Crossfire/SLI users should benefit the most from this
- If you want to return to using HPET, you can revert any BIOS changes you made regarding such, and then run this from an Administrative Command Prompt: bcdedit /set useplatformclock true
- Off timings can cause strange side-effects. A common one in the past was spells in World of Warcraft not having correct cooldowns.
- Overclocking should be done at the BIOS level to not affect CPU timing
- Overclocking the FSB will likely cause worse timings, in comparison to just adjusting the CPU clock