Windows Timer Resolutions – Why Disabling The High Precision Event Timer Makes Sense

The HPET (High Precision Event Timer) is a timer that is used in most PCs and in some cases, it increases performance since it is a very precise timer. However, what was noted by many gamers trying to optimize their systems is that HPET can also cause FPS loss, freezes in games, and higher latency overall.

Why is this issue occurring and what should you do with HPET and your Windows timer resolution for better FPS stability and higher precision at the same time?

Why Disable HPET?

While HPET is an extremely precise timer (14.32MHz) which in theory would mean that it would perform the best, in practice when tuning your system for gaming it seems that HPET is too precise bogging down your machine.

timerbench hpet
timerbench invariant tsc

Gaming seems to benefit from comparatively less precise but more stable and consistent timers and ticks (TSC 3.32MHz) that have a beneficial impact on your percentiles and low FPS. In short, the level of precision HPET offers is not needed when gaming and will result in worse performance overall.

How to Disable HPET?

To get rid of HPET you need to open CMD with administrator privileges and type – bcdedit /deletevalue useplatformclock and then restart your machine. This will disable HPET on your machine, and to test that the changes took effect you can either use the bcdedit/enum command (no value for useplatformclock) or use TimerBench (pictured above) which gives you a more beginner-friendly interface.

userplatformclock

As explained in this clarification post you do not need to disable HPET in the BIOS or Device Manager because those changes either do nothing or cause issues by enabling outdated system timers.

Once off, your system will use a TSC clock and you will need to then select between running RTC or TSC ticks, TSC sync policy, etc.

Most custom Windows 10/11 builds already have HPET off so if you get an error message after putting in the command it simply means that HPET was already disabled.

Choosing Between TSC & RTC Ticks

Your system clock has already been put in place (TSC) which means the next important component is to figure out the system tick. You can find more information about the system ticks in the clarification post but the short answer is that you will need to test both ticks (TSC+RTC vs TSC+TSC) to see which one runs better on your system.

RTC is an outdated tick that is not dynamic and has no optimizations which might decrease your system performance and conflict with high polling rate mice. RTC is recommended for unoptimized systems or people who just want the process to be as short as possible without further testing.

Most tuned systems should run TSC+TSC since it is a higher precision timer resolution compared to RTC which was intended for legacy applications (still lower precision than HPET clock).

How to Disable Dynamic Tick

Dynamic tick is a power-saving feature enabled on laptops that helps them preserve battery life. If you are aiming for the best possible performance and inputs such a feature being enabled is counterproductive.

disable dynamic tick

To disable dynamic tick open CMD with administrator privileges and use the command – bcdedit /set disabledynamictick yes. Restart your machine afterward and you should be set (check with bcdedit /enum).

Adjusting Your Windows Timer Resolution

To take full advantage of the bcdedits you have done you need to manually adjust your system’s timer resolution. To do so you can use a simple utility like Memory Cleaner set to your desired timer resolution.

adjust time resolution

The reason you would do this is because Windows by default runs 15ms on idle and 1ms when you need higher precision for timer resolution values. You can achieve higher precision by using a manual micro-adjusted timer resolution as explained here and test the values using the MeasureSleep utility.

5070 value
1ms value
05 value

Values used: 5070 – 10000 – 5000

Your Windows timer resolution will behave differently depending on what tick you have chosen to use (RTC/TSC) therefore the values you will settle on will be different. If your system is set up correctly you should be able to achieve 1ms sleep delays with low deltas.

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
35 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
TeKa
TeKa
1 year ago

Thanks for your review, so far some cmds worked a bit for me on Win 11, though I can not still get rid of my Kernel core associated with Nvidia drivers processes latency… It goes into 11,5 ms at minimum (using latencymon) in kernel timer latency (I do not know what kind of impact it has on my high end PC), while DPC latency shows a constant 1.06 Ms latency thanks to your cmds that stabilized it, even though before I had nano spikes at few nanoseconds, I’d rather think that better have a constant DPC latency, than spikes down… Read more »

XbitLabs Team
Editor
1 year ago
Reply to  TeKa

Yes, constant latency is better because it means your inputs will feel similar. Spikes, even if they have lower latency, might lead to inconsistent inputs.

scoob701
scoob701
6 months ago
Reply to  TeKa

I have an rtx 4080, my fix was to go into NVidia control panel and choose ‘prefer maximum performance.’ that corrected most of the issues I was having with regards to latency

x7007
x7007
1 year ago

Are you sure we need to disable the UseplatformTick Yes for new system intel 10th/11/12?For windows 11 21H1 and Windows 10 newest build?

XbitLabs Team
Editor
1 year ago
Reply to  x7007

Hello, you would want to use the “bcdedit /set useplatformtick yes” command to disable synthetic timers in your Windows. As explained in the article you do this to get a “clean” number without the extra digits at the end which can mess up your inputs. The command therefore is not to disable it, but to use it. To check that you have done everything correctly you should be able to set your resolution timer to 1 ms and also in TimerBench 1.5 you should see that you are using the TSC timer (hardware timer instead of the software HPET timer).

x70007
x70007
1 year ago
Reply to  XbitLabs Team

For me, on the Intel 12th, it’s already 15.625 and 10ms and 1ms. so I don’t need to add the command?

TICKRATE
TICKRATE
1 year ago

Hello, can’t the commands used affect the stability of the system?
I have heard that in the new versions of windows the commands are not needed anymore
sorry for my english

XbitLabs Team
Editor
1 year ago
Reply to  TICKRATE

Hello, the stability of the system is not impacted at all since you are simply changing a software timer for a hardware one. At the same time certain applications might not play nice if you do use a timer resolution that is lower than 1 ms, but i have yet to meet a case where this was a big issue.

You will also want to use these commands in newer versions of Windows as well because they are getting incrementally worse than the older builds (1709>1809>21H2, etc in terms of latency).

IntelGuy
IntelGuy
1 year ago

This is complete snakeoil.

An HPET is a high-resolution timer that’s used to compute how many frames per second you are getting. By turning it off, your computer uses a less accurate source for measuring time.

In short, disabling it does nothing to improve performance, it just makes your FPS data less accurate. Don’t bother with this crap.

noname
noname
1 year ago

I don’t think Intelguy is wrong. It’s a higher resolution timer so it sees more of what’s going on hence the use of the word High Precision Event Timer. The difference is the effective output between the two (HPET on vs HPET off) What you describe as being lower input lag is the effective input to output flow. And it’s true, it HPET off does give the feel of lower input lag because the observed precision/resolution of data in the flow is not as fine-grained as when HPET is on. Thus graphs look stable from the capture. Being termed “snakeoil”… Read more »

Esteban
Esteban
1 year ago

OMG you INSANEEEE¡¡¡¡¡¡¡ my polling rate just get so much smooth, my aim to much better, i was on 800 – 1200 mouse hz, my aim was very inconsistent, now im on 950 1050 hz I LOVE YOU

Mr.Sirbosi
Mr.Sirbosi
1 year ago

Very useful instructive article!
I noticed some improvements but in some cases performance dropped a bit. It seems to affect mainly vulkan apps in combination with reshade negatively some times.
One question, if I want to revert all settings do I just type a NO instead of YES in the cmd lines?

Mr.Sirbosi
Mr.Sirbosi
1 year ago

Ah thats great! Thnx for the quick reply and guide! Much appreciated. <3

Bruno
Bruno
11 months ago

Hi Chris.
My MouseTester result is kinda strange. It is not consistent as yours.
I am already using Invariant TSC.
I am using Logitech G502 Hero at 1600DPI (1000Hz).
Could you please give me some advice based on the attached image?

test.png
Chris
Chris
9 months ago

By default ‘useplatformclock’ is not defined on bcdedit, so the deletevalue command merely resets it to default, it wont disable HPET, but rather not use HPET by default whilst letting apps use it on demand (such as hwinfo). Setting ‘useplatformclock’ to ‘no’ however will disable HPET so not used even when requested. Because of this I can see why people have said its snakeoil, as you have merely been resetting it to default and then saying it has better performance. If useplatformclock is populated, then it means something either the user or an app has actually put it there, then… Read more »

Miroslaw
Miroslaw
7 months ago

Hi Chris! My sleep latency is high, around 15ms, delta 14ms. Where can be the problem? Bios settings? bcdedit/enum same like yours. MemoryCleaner doesn’t want to start with my Win 11 so I have to use ISLC (set on 0.51ms).

Latency 1.png
NAT
NAT
7 months ago

I’ve scoured my BIOS for all the things to disable and tweak. I actually get some weird activity where my sleep drops from 15ms to 6ms for a few dozen lines in Measuresleep

Miroslaw
Miroslaw
5 months ago

I fixed this, now I have 0.0200ms delta, befor around 14.00 ms. I had to add this:

sj
NAT
NAT
7 months ago

Why would i be getting 15ms on sleep? My Resolution is set to .500 and HPET is off using TSC+TSC

image_2023-09-08_205748361.png
Alex
Alex
7 months ago

Not working on Win10 22H2 + X670. No matter what I do, it doesn’t go below 15.5 ms (delta 14.55). What should I do?

Reinier
Reinier
6 months ago

Hi mate, where can I dload (or guide) to test W11 XOS?

Mirza
Mirza
6 months ago

I don’t know what I’m doing wrong here. I have followed your steps however my “slept” timer does not fall below 15-16ms. I have disabled HPET, my QRC type in TimerBench says Invariant TSC, disabled all power savings, tried setting my resolution timer to 0.5 and 0.507 but my slept timer does not budge at all.
Any tips with what I might be possibly doing wrong over here?
My build is a Ryzen 5800x3d, x570 Aorus Master

Serg
Serg
5 months ago

Hello, thx for review!
– and have you checked whether it is possible to set equal 2 ms, 6 ms on a personal computer (Windows 22H2). how to make it?
– maybe these values are better for the mouse sensitivity in game, because frequent requests only load processor threads