TWEAK: Enable HPET (in BIOS and OS) for better performance and FPS


Recommended Posts

HPET off in WIndows: Timers are not in sync:

Windows8RTCBugTestingV2_12.png

 

HPET on in Windows: Timers are in sync:

Windows8RTCBugTestingV2_13.png

 

 

There is a timer big in Win 7 & 8

http://www.ocaholic.ch/modules/smartsection/item.php?itemid=1071

 

 

Because of a bug this deep, it's expected for software such as games and applications perform differently. So for to get the best result with application in question, one just has to benchmark, test and see.

 

The timer bug issue is real.

I thought these "tweaks" were dying out.

 

This does absolutely nothing positive on anything I've tried it with.  At best it does nothing, at worst it makes the system completely unpredictable in terms of performance.

 

What are you going to tell us to do next? Go into msconfig and tell Windows to use multiple cores during boot?

He really misses the forest for the trees there. All of this wasted idle time accounts for only small fractions of energy in comparison to load times. I would hazard a guess that Idle loads make up 1-3% of the power budget of server farms and super computers. The focus in HPC has generally been on saving power during load times and reducing maximum power consumption because that's were you see obvious savings.

 

He also makes the same mistake that is being made in this thread: not testing for overhead in real workloads. You can't establish a relationship for %overhead in real loads by testing a toy benchmark. He's probably right that there is noticeable overhead from higher timers resolution in general, but he certainly isn't proving it .

  • 3 weeks later...

To test the impact of HPET specifically for my system I decided to use the Bioshock Infinite Benchmarking utility.

The reason being simply because I plan on playing this game.
In the tool I chose the options: (2) UltraDX11_DDOF, (2) Custom resolution, (1) 16:9, (4) 1920 x 1080
I ran the 5 tests in succession after first restarting the computer and verified the HPET settings were activated via WinTimerTester I then let the computer idle for 5 minutes.

My Operating system is: Windows 7 Pro x64
CPU: Core i5 3570K OC to 3.8GHz - CPU power saving features disabled so it runs at a constant 3.8GHz always.
Mobo: Asus P8z77-v pro (Note the LPCIO is a Nuvotron)
RAM: Gskill Sniper 2133 2x4GB
GPU: EVGA Nvidia Geforce 560Ti 1GB Crysis 2 edition

I read somewhere that Nuvotron timer on Asus boards perform worse than the regular timers - which is reflected below.

With HPET enabled in bios and useplatformclock yes: (WinTimerTester reports QPF 14.31818 MHz)
test 1 avg fps: 42.06 min: 13.34 max: 82.70
test 2 avg fps: 42.04 min: 17.39 max: 77.26
test 3 avg fps: 42.07 min: 15.40 max: 80.88
test 4 avg fps: 41.92 min: 13.98 max: 87.14
test 5 avg fps: 42.11 min: 16.25 max: 82.07
Total Average FPS: 42.04

With HPET disabled in bios and useplatformclock no: (WinTimerTester reports QPF 3.32038 MHz)
test 1 avg fps: 42.50 min: 15.48 max: 82.53
test 2 avg fps: 42.50 min: 11.54 max: 87.50
test 3 avg fps: 42.59 min: 18.49 max: 87.16
test 4 avg fps: 42.51 min: 15.68 max: 86.36
test 5 avg fps: 42.55 min: 19.99 max: 85.29
Total Average FPS: 42.53 (gain of 0.49 fps or 1%)

Interestingly, If I leave HPET enabled in BIOS and used bcdedit /deletevalue useplatformclock and reboot, WinTimerTester reports QPF to be 3.32037. FPS avg was 42.37.

When I used latencyMon to do latency tests this is what I got with HPET on and off:

HPET ON:

Highest measured interrupt to process latency (?s):   137.307954
Average measured interrupt to process latency (?s):   3.937589

Highest measured interrupt to DPC latency (?s):       72.285723
Average measured interrupt to DPC latency (?s):       1.535534

HPET Off:

Highest measured interrupt to process latency (?s):   78.304503
Average measured interrupt to process latency (?s):   1.111873

Highest measured interrupt to DPC latency (?s):       77.099818
Average measured interrupt to DPC latency (?s):       0.492777

both tests were done after letting the computer idle 10 minutes after rebooting it and checking that wintimertester reported the correct frequencies.
The tests were also let to run for 10 minutes.

Conclusion: (For me at least or people using the same board/Nuvotron LPCIO with Win7) Leave HPET disabled in motherboard and useplatformclock set to no.
If you are using windows 8 you probably want HPET enabled if you are overclocking or using turbo boost as it can actually mess up your clock and possibly do other things.

 

I still have the benchmark results saved so if you need more detail I can provide it.

The FPS results are too "noisy", you have a variance of 10fps in one of the tests, so an average increase of 0.49fps is just "noise", if you repeated those tests you'd get different results again.

Not really surprising. If there was a difference, gaming sites would have been widely reporting the results and we'd have seen professional benchmarks of HPET vs non-HPET for gaming.

Well its not like the Bioshock Infinite benchmark is an accredited benchmarking program or anything. However the latencymon tests are pretty clear to me. Honestly I can't really feel or see any difference between this setting being set to on or off but it is true my latency is lower with hpet completely disabled. An average of nearly 4us compared to 1.1us on interrupt to process latency is pretty big.

 

I did my work. I would like to see others do some benchmarks and compare scores like I did. Especially to confirm whether or not the Nuvotron LPCIO results in worse timings compared to other manufacturers.

Well its not like the Bioshock Infinite benchmark is an accredited benchmarking program or anything. However the latencymon tests are pretty clear to me. Honestly I can't really feel or see any difference between this setting being set to on or off but it is true my latency is lower with hpet completely disabled. An average of nearly 4us compared to 1.1us on interrupt to process latency is pretty big.

 

I did my work. I would like to see others do some benchmarks and compare scores like I did. Especially to confirm whether or not the Nuvotron LPCIO results in worse timings compared to other manufacturers.

Don't discount your Bioshock results. Bioshock is real world benchmark and is exactly what you would want test here to see if HPET results in tangible real-world performance gains/losses. It's the difference between micro-benchmarking and benchmarking actual applications. See: http://en.wikipedia.org/wiki/Benchmark_(computing) and see post #73 in this thread where I discussed the numerous issues with how the original benchmarking was done in this thread.

 

In this particular case with your DPC benchmarks, we are talking about DPC latencies with a few millionths of a second difference on average. These results are so tiny that it would be impossible to perceive a difference for real-time audio/video. Now if there had been large spikes that would be a different story.

 

Also, one last things to note, the LPC Bus is separate from clock generation (It's not the clock source).

 

Hi there, where to get this timers tool from, shown in hardbags screenshots?

He used this: http://en.wikipedia.org/wiki/Windows_System_Assessment_Tool

sure? how to show this timers window then?

I thought you were talking about the scores from post #61 (. For those you need to run winsat in command line:

http://windowsitpro.com/systems-management/how-can-i-run-windows-system-assessment-tool-winsat-update-directly-command-line

 

For the other benchmarks, he list those in the corresponding post.

thanks a lot for your efforts. just for better understanding, im talking about the pictures in post #77. there is a link, but i'm not able to find this software anywhere!

Oh, that particular piece of software is private. Comments on the website of that thread asked for it, and the author declined to give it for some reason. As such, the results should be taken with a grain of salt since they are not verifiable.

 

You may be able to find another piece of software that gives the resolution for the other timers, but you can test HPET using wintesttimer.

Don't discount your Bioshock results. Bioshock is real world benchmark and is exactly what you would want test here to see if HPET results in tangible real-world performance gains/losses. It's the difference between micro-benchmarking and benchmarking actual applications. See: http://en.wikipedia.org/wiki/Benchmark_(computing) and see post #73 in this thread where I discussed the numerous issues with how the original benchmarking was done in this thread.

 

In this particular case with your DPC benchmarks, we are talking about DPC latencies with a few millionths of a second difference on average. These results are so tiny that it would be impossible to perceive a difference for real-time audio/video. Now if there had been large spikes that would be a different story.

 

Also, one last things to note, the LPC Bus is separate from clock generation (It's not the clock source).

...

Yeah, this is one of those things where benchmarking doesn't help much, since any improvements won't be visible. The default timer resolution on Windows is only 16ms (You can lower it, but Microsoft recommends against it for a bunch of reasons), so seeing an improvement of a few microseconds on one benchmark isn't going to translate into a real world difference.

And the benchmark that is useful (The Bioshock one) is noisy enough to not actually show any improvements, and that's just a fact of how computers work (The game isn't the only thing running, each run of the game will actually be different due to multiprocessing, etc.). If we saw a large improvement over multiple runs of the benchmark then we could see that the tweak had some actual effect.

  • Like 1

These are my results:

 

 

cbv9.jpg

wnfz.jpg

 

My Hardware: 3770K std clock on a GA-Z77-DS3H (TimerResolution.exe running in background) (HPET on, OS and EFI)

 

I saw, for example on Cartels pictures (#60), people with way lower latencies. How to reach them? With HPET off I'm still not able to reach these low latencies... :(

In what scenario does it possibly matter?

 

There are no actual use benefits from a lower latency here.

 

 

Hi there,

 

in Germany it's very rude to answer a question with a counter question. But I'd like some help, so I'll try to explain. Before I experimented with the HPET Option activated, I had a lower latency. Many things ran smoother and more fluent. Now with HPET on, some other things work better. So why shouldn't I try to combine these options? Obviously this should be the best possible system setting for me.

 

Kind regards,

WonG.

Hi there,

 

in Germany it's very rude to answer a question with a counter question. But I'd like some help, so I'll try to explain. Before I experimented with the HPET Option activated, I had a lower latency. Many things ran smoother and more fluent. Now with HPET on, some other things work better. So why shouldn't I try to combine these options? Obviously this should be the best possible system setting for me.

 

Kind regards,

WonG.

My former co-worker from Germany use to do this :laugh:. That's a bit of a digression but there are many cases where asking a counter question is perfectly valid. In this case, Wakers has a valid point and question. The reason being that you are seeing latencies in the 500 millionths of a second range. The resolution is so tiny that you should be able to handled deferred real time video and audio without delays (read as: smooth playback).

 

That being said to answer your question, you probably aren't going to be able to achieve lower latencies than you are currently seeing. The only thing else you can do is play with turning off device drivers. For example, turning off wireless will lower my DPC latencies. One other things you can do that I don't personally recommend is disable dynamic scaling of cores (in the power options set the minimum processor state to 100%).

 

Let me be clear about what happens when you have the platformclock setting as false. It's not that it disables HPET, what really happens is that it Windows uses a combination of timers for timing (TSC + HPET). Why? Because using the TSC is cheaper to sample than HPET so it is better suited for scheduling operations. However, at the same time HPET is useful for scheduling one-shot interrupts for sleeping or idling systems (it saves power). The point, I'm making is that different timers have advantages and disadvantages in certain scenarios and this is not, "HPET is the best timer on the system" as the information you'll find around the web would seem to indicate.

 

As for how that relates back to DPC latencies: I noticed a consistent difference of only 50-100us minimum on my laptop between forcing / not forcing HPET. It was far too low make any perceivable difference. To put that in context, in testing the difference is ~1-2% of the maximum latencies I see on my laptop (wifi causes spiking of 1000-3000us at times).

 

To be perfectly honest, I'm not even convinced that the timer they are using to measure DPC has consistent reliable results between when HPET is forced and not forced. Why? The Windows API doesn't give you a consistent clock source. It depends on the system configuration which we are changing in this scenario. See section 2.1.4 here: http://www.windowstimestamp.com/description -- so how can I be sure the differences aren't accounted for by changes in the timer function behavior itself?

But I already saw way lower latencies on other screenshot, for example in post #60. Without HPET activated my latency was about 60-90?s. And believe me, the difference is huge (especially in video games). I saw people with latencies about 20-50 with HPET activated. A stable latency (around 100?s) should work for me. Otherwise I'll have to deactivate HPET again, because the disadvantages outbalance the advantages. That's not what I'm aiming for, I don't want to miss the advantages I already acquired :(

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Microsoft launches Godot Sample to streamline Xbox PC game development on the engine by Pulasthi Ariyasinghe Microsoft today announced a new endeavor that aims to make it simpler for Godot developers to get their products into the Xbox PC ecosystem. Dubbed the "XBOX Godot Sample," this is a new public reference for developers using the open-source engine. This is set to serve as an example of how Microsoft GDK, Xbox Services, and PlayFab can be integrated into their projects. The sample is available now on GitHub as a working example. This covers key features in gaming projects that developers may need to release their projects on Xbox PC, with everything from matchmaking and game sign-in to gamepad compatibility with Godot being covered. This release is being called the first step in giving Godot developers the tools to bring their games over to Xbox PC, with more changes to come based on feedback and issue reports. However, the company was clear that this is not related to bringing Godot projects to Xbox consoles. The engine's open development model stops it from accessing console SDKs due to the requirement of NDAs and legal contracts. Here's how it explained this Godot sample project's focus: This is a source-only sample, not a product. It's MIT-licensed at the wrapper layer; the GDK and PlayFab dependencies still require their own installs and license acceptance, consistent with our other XBOX samples. There is no set update cadence for support or maintenance. We’ll watch the repo, monitor issues, and iterate where it makes sense, but this isn't a commercial release. That said, we’re excited to hear your feedback and see any community PRs, as we evolve this together. This is the first step in bringing Godot for XBOX on PC. We plan to evolve it over time based on what the community tells us is most valuable. This sample is built specifically for XBOX on PC. It doesn’t include support for XBOX Series X|S or XBOX One. If you’re already building for XBOX Series X|S or XBOX One, please talk with your XBOX representative. If not, you can get started by signing up here. Game developers can find the XBOX Godot Sample by heading to GitHub over here. Documentation on how to get started with Godot for building an Xbox PC project can be seen here.
    • I don't understand the vision. Do people really want to buy a new computer from Dell with 6 browsers installed? We all keep asking for Microsoft to stop having so much junk on their OS, and adding a bunch of browsers seems to go against that. Ideally, we would just be asked what browser we want during OOBE but Google is just going to pay Dell a bunch of money to include Chrome. Additionally, would you want your phones to start including all the browsers too when you get them? The only thing I ever wanted was to be able to uninstall IE or edge and I believe you are now able to. I do agree that microsoft needs to chill with their "are you sure you don't want to try edge before you install chrome" ads when going to download chrome.
    • It is notable that around 70% of web browser users choose Google Chrome. However, it is puzzling why anyone on Windows would opt for Chrome when Microsoft Edge is often superior in many aspects and comes pre-installed. Edge collects less data, uses less RAM, and is more optimized for Windows as a native Microsoft product. While some may point to bloat in Edge, much of it can be removed with simple tools, requiring no more effort than installing Chrome. Meanwhile, Chrome reportedly downloads large amounts of AI data (4 GB) without explicit consent. I'm sure you Chrome users love that, or? Here is one example of a tool that doesn't even need to be installed to be able to use: https://github.com/TheBobPony/MSEdgeTweaker Although Microsoft’s aggressive promotion of Edge may be questionable, the browser’s current advantages make it a preferable choice over Chrome today, even if Chrome may have been better in the past.
    • JetBrains rolls out IntelliJ IDEA update with Markdown preview fixes and more by David Uzondu Image via JetBrains IntelliJ 2026.1.3 from JetBrains has landed, bringing several highly requested bug fixes that target common UI glitches and terminal rendering issues. If you run tmux inside the integrated terminal, the IDE no longer renders the cursor above the active line. The Markdown preview bug, which was fixed in this release, had annoyed developers for quite some time, as the preview pane failed to render images saved outside the project directory. Instead of displaying the actual image, the IDE simply showed a broken image icon, a problem that stuck around for two years before this update. Over on Windows, developers running WSL can now use wsl.exe to spin up their environments without losing terminal functionality. In previous builds, launching a terminal shell with something like wsl.exe -d ubuntu inside a Windows-based project broke both shell integration and active process detection. Other bug fixes in this release include: An issue where Gradle sync incorrectly reported success as a failure on WSL when using Gradle 9.5.0. A syntax highlighting bug that flagged valid Java for-loop initialization blocks with multiple statements as incorrect. A warning bug that triggered a false non-null local variable alert when using JSpecify annotations. A database generation bug that hid the option to use a DELETE statement instead of a TRUNCATE checkbox. A Kotlin highlighting failure where an assertion error in the Gradle redundant library inspection broke error highlighting. A UI bug where the ComboBox popup lacked a maximum height restriction. A Snowflake syntax error where DataGrip failed to support the "create temp" command. A Svelte syntax parsing failure that incorrectly flagged quotes inside inline expressions. A VCS repository manager deadlock that triggered thread pool exhaustion. A memory leak where the LazyTree component kept all previous versions of a tree in memory. IntelliJ 2026.1.3 is the third bug fix release for the IntelliJ 2026.1 series. The first one landed back in April with a fix for the WSL Python interpreter freeze, another fix for guest participants using Emmet abbreviations, and corrected WildFly server deployment errors.
  • Recent Achievements

    • Collaborator
      Asgardi earned a badge
      Collaborator
    • Conversation Starter
      mobandz earned a badge
      Conversation Starter
    • Apprentice
      fernan99 went up a rank
      Apprentice
    • One Month Later
      nothanks earned a badge
      One Month Later
    • One Month Later
      B2Proxy earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      468
    2. 2
      PsYcHoKiLLa
      243
    3. 3
      Skyfrog
      79
    4. 4
      FloatingFatMan
      73
    5. 5
      Michael Scrip
      60
  • Tell a friend

    Love Neowin? Tell a friend!