Further Clarification on Timer Resolutions and HPET Settings

As explained in this previous article HPET or the High Precision Event Timer is a suboptimal setting if you are trying to get the best FPS stability and the lowest latency/most stable polling rate. While disabling it and just using the CPU TSC timer is a great start for most there are a couple of nuances you need to understand about your system clock and tick combinations to get the best possible outcome.

Do You Need to Disable HPET in BIOS?

No, disabling HPET in BIOS (for the motherboards that still give you this option) is not a good idea. This is because, with HPET in BIOS disabled, you will effectively run PMT which is a deprecated timer. If you disable HPET in BIOS and through CMD commands force TSC without HPET (PMT), it can lead to desync, clock skews, inconsistent polling rate, and weird FPS values.

Do You Need to Disable HPET in the Device Manager?

In most cases, the HPET device shown on your device manager doesn’t actually do much, and instead, you should focus on the two things mentioned above. Keep HPET ON in your BIOS and disable it in your Windows through CMD commands.

device manager hpet

For ease of mind, you can also disable HPET in the Device Manager tab.

What Does ”Useplatformtick” Do?

Using the platform tick command will force your system to use RTC (real-time clock) which is an older tick. This is the usual combo that people go for when trying to stabilize their systems and polling rate for 4K-8K Hz mice (bcdedit /deletevalue useplatformclock & bcdedit /set useplatformtick Yes).

This results in your system using the TSC clock plus the RTC timer which is optimal for un-tweaked systems.

What Are Some Recommended Combinations of System Clocks and Ticks?

If you have a modern system with a tweaked BIOS and tweaked/custom Windows install it is recommended you try running TSC clock + TSC tick without desync: bcdedit /deletevalue useplatformclock – bcdedit /deletevalue useplatformtick – make sure HPET is enabled in BIOS.

For those who have a more basic system setup using the TSC clock + RTC tick is recommended: bcdedit /deletevalue useplatformclock – bcdedit /set useplatformtick Yes. This should result in better inputs in games and a more stable polling rate for your mice.

Additional BCD Commands

Besides testing and figuring out which system clock and tick runs the best on your system you should also disable dynamic tick since it is a power saving feature designed for laptops. You can do so by using the bcdedit /set disabledynamictick yes command. If you want to use RTC for system tick you can delete the value altogether (bcdedit /deletevalue disabledynamictick) since RTC is not a dynamic tick counter.

The last thing left to do is for you to test which TSC sync policy will work better on your system: bcdedit /set tscsyncpolicy Enhanced or Legacy. Test with both Enhanced and with Legacy and do different polling rate tests and FPS tests to see if you get better values with one of them, or if there are any changes at all..

How to Check What Settings Are Applied?

In the end, you can use bcdedit /enum to see what your BCD commands look like.

check hpet settings

In my case, you can tell by looking at my CMD window that I am running TSC+TSC (HPET on in BIOS) and Legacy tscsyncpolicy which seems to work the best for my HSK Pro 4K Hz mouse.

You can tell because there is no value for useplatformclock (bcdedit /deletevalue useplatformclock – disabled HPET and forced TSC) and there is no value shown for useplatformtick which means it has also been deleted (bcdedit /deletevalue useplatformtick). If I was using RTC tick the bcdedit /enum command would have shown: useplatformtick Yes.

The one thing that is shown clearly is that I am using Legacy tscsyncpolicy denoted by the “tscsyncpolicy” set to Legacy. All of these BCD commands are particular to your system so you should test all the possible combinations and figure out which one works the best.

About The Author

Chris (vile_is_dead)

Custom Windows ISO enjoyer, FPS optimizer, and aim improvement enthusiast. Will disassemble all of his peripherals (and sometimes PC parts) to mod them even if all of them work perfectly fine. Discord/Twitter: vile_is_dead

Subscribe
Notify of
guest
13 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Lauro
Lauro
6 months ago

So, I got everything but one little detail. Why on the first post you suggest to disable dynamicticks as they’re a power saving feature, but on this post you suggest to enable them in order to run TSC without desync? Is there an interaction I’m missing between these two or just an odd typo?

Lauro
Lauro
6 months ago

Got it now, thanks! That was bugging me as I wasn’t sure what was the optimal combination. Currently running TSC+TSC+Enhanced with dynamic ticks disabled and games feel super responsive. I thought TSC+TSC+Enhanced would impact performance negatively with low fps and stutters but it wasn’t the case even in a rather low end PC. Once again, thanks for the clarification.

cyberdeath
cyberdeath
6 months ago

Have you found tscsyncpolicy Enhanced or Legacy to be better for first person shooters?

cyberdeath
cyberdeath
6 months ago

So you literally used “Deleted” as the value (bcdedit /set tscsyncpolicy deleted)? Or do you mean bcdedit /deletevalue tscsyncpolicy

Travis Keith
Travis Keith
5 months ago

I was able to set useplatformtick to yes but I cant seem to get TSC + TSC. I will check to see if hpet is on in bios but it did seem to be on in device manager.

Amir
Amir
5 months ago

Hi, i have so many problem, im using ggos build 20h2 and i did everything you said but when i use 5000 value in memory cleaner the current time shows 0.496ms and according to this photo there is no consistency, what is the problem? btw i have disabled hpet and rtc

res.png
Rema
Rema
5 months ago

Might be a dumb question, i did the cmd commands and tried to test ticks with MeasureSleep i get consistent .04996 but slept goes to 15ms, is there anything i can do to make it lower? Thanks for the guide!

Michael
Michael
4 months ago

Hey, I dont understand why my tscsyncpolicy doesnt want to show in /enum. cmd prompt seems to be taking the command to change it per your command, but I can never see it for some reason. Is there anything you have to enable first to edit that value?
Edit: Nvm, you just have to set the bootmenupolicy to Legacy first. Figured it out.

Last edited 4 months ago by Michael
YAN
YAN
4 months ago

For WIN10, turn off HPET, use ISIC, and then simply open the DPC Latency Checker.

1