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


Recommended Posts

the effects are best seen in such applications as games, and especially online-connected games. You should be able to play with more graphics on, and suffer no micro-stuttering. However HPET tweak is highly hardware dependent and it cannot be predicted what's the outcome - by other means than testing.

Other thing, I heard MS is dropping LAPICs away from Win 8.

Link to comment
Share on other sites

Well I tried 'bcdedit /set useplatformclock true' but I think it made it worse.

How do I put this to what ever is Windows 7 default please?

Link to comment
Share on other sites

I got this while enabling in OS.. Enabled from BIOS..

o5Rvh.png

Link to comment
Share on other sites

the effects are best seen in such applications as games, and especially online-connected games. You should be able to play with more graphics on, and suffer no micro-stuttering. However HPET tweak is highly hardware dependent and it cannot be predicted what's the outcome - by other means than testing.

Other thing, I heard MS is dropping LAPICs away from Win 8.

Are you really still trying to push this snake oil? Let it go, man.

  • Like 1
Link to comment
Share on other sites

Honored shadow, read this whole topic. I have provided the code to get back to "default".

Zlip792, run cmd with admin privileges.

ahhell, HPET tweak is a very good one for certain people. It doesn't work for everybody. And actually MS heavily pushed HPET timer in Vista, but stepped back Win 7. I don't know why. But the timers are changing again - in Win 8 at least LAPICs are dropped off.

Link to comment
Share on other sites

  • 3 weeks later...

Now this is an interesting thread.

I've done the tweak and I can tell it's smoother (not really in terms of FPS but in terms of "felt" smoothness) however my mouse feels a lot different and it actually feels laggy, like with v-sync on at 60hz (not that bad actually but close). I don't understand why that is. It's like everything's delayed so as to be smoother (again, kind of like v-sync) and I didn't expect that from a "timer" tweak. My OS feels smoother but slower too (less responsive).

I haven't played with HPET off in ages though, might give it another shot (right now I'm just comparing HPET on in BIOS + not on in Windows and HPET on in BIOS + on in Windows).

Link to comment
Share on other sites

  • 2 months later...

Um....HPET=DPC LATENCY

DPC LATENCY=INPUT LAG

INPUT LAG=HITBOX LAG

I have actually replaced a motherboard so i could disable HPET. Ignoring the fact that HPET does not affect FPS more than a couple FPS, and that difference is measured on some benchmark because when you are benchmarking YOU DONT TOUCH THE MOUSE BECAUSE IT WILL AFFECT THE SCORE, RIGHT? When you are actually in a game there is near constant input, right? (If there isnt then you are probably just camping the entire time and if so then I suggest simply hitting ALT-F5).

Input results in ISRs and DPCs regardless of how good your system is setup or how many FPS you get when you benchmark. HPET lengthens the execution time of those ISRs and DPCs, which results in input lag. If your FPS is too low and you lower your graphics settings the game may not look as pretty but you can still play effectively, but if your DPC Latency is too high, then you have to not only consider real world factors such as bullet drop, wind speed and direction, and target movement, but you also have to compensate for the DPC latency. Lowering your graphics settings wont help with that, trust me. Lowering the DPC Latency made a huge difference for me, at the time i was playing crysis wars on an i7 2600k running at 4.2Ghz with two 5870's at 1Ghz. My FPS never dropped below 120 and usually it was much higher, and lowering my DPC Latency from between 50-80 to close to zero made a huge difference in my hit ratio and my K/D.

Heres some text from Von Dach's post on GURU 3D:

http://forums.guru3d.com/showpost.php?p=3770113&postcount=2

http://en.wikipedia.org/wiki/High_Precision_Event_Timer

Quote: Problems HPET is a continuously running timer that counts upward, not a one-shot device that counts down to zero, causes one interrupt and then stops. Since HPET compares the actual timer value and the programmed target value on equality rather than "greater or equal", interrupts can be missed if the target time has already passed when the comparator value is written into the chip's register. In the presence of non-maskable interrupts (such as System Management Interrupts) that don't have a hard upper bound on their execution time, this race condition requires time-consuming re-checks of the timer after setup and is hard to avoid completely. The difficulties are exacerbated if the comparator value is not synchronized with the timer immediately, but delayed by one or two ticks, as some chipsets do. http://forums.nvidia.com/index.php?showtopic=183329

Quote: A guy on another forum claimed that by disabling it, his DPC latency plummeted and his gaming performance improved; most notably the microstuttering.

So I tried it myself, and the difference to my astonishment, was very noticeable. First off, my DPC latency dropped big time. Not that it was high to begin with, but now it hovers below 10 for the most part.

Second, I noticed that general windows performance felt snappier. I know I'm not imagining things, because like many, I scrutinize my system so I'm sensitive to even minute changes in performance.

And last but not least, gaming performance is definitely smoother. Anyone with SLi will tell you that occassionally when playing a game, you experience a bit of lag or stuttering for no apparent reason whatsoever. Most people attribute these minor discrepancies to SLi, but what if it's something else? Because I can tell you, that my overall gaming experience has improved since turning HPET off.

If you have the HPET option in your BIOS, I highly recommend experimenting with it and see if it impacts your performance. There's a possibility that having it on could increase the amount of microstuttering in any given game; particularly if you're running SLi. http://www.xtremesystems.org/forums/....php?p=4592036

Quote: It can be used by software or the os for very accurate timing, however when it's "ON/Enabled" then windows will use it as the main clock source instead of the other options like the cpu TSC (time stamp counter).

The HPET can provide more precise timing, however the OS has to reference it via a memory address, or I think the HPET can raise a interrupt,

so therefore it's slower.

The TSC may be less precise, however it's a register in the CPU so this is the fastest possible way to access a clock source. My own result with DPC Latency Checker:

HPET 64-Bit ON: between 100-150us

HPET OFF: between 5-15us

I loss 3-4 frames per second, single card and CFX with HPET OFF, but I know chance of stuttering decreased accordingly.

*Some motherboards have HPET enforced and it can't be disabled (Asus).

Maximize your Windows timer resolution

http://www.lucashale.com/timerresolution/

Just keeping this little application open in the background will reduce DPC latency, improve responsiveness. Good workaround particularly for those who are stuck with an enforced HPET On.

I tested this on my workstation dual core who is using a lot of CPU time constantly. HPET is off.

DPC Latency is ~650us at 0.977ms timer resolution (default with my apps running).

DPC Latency is ~190us at 0.5ms timer resolution (maximized).

I now keep this app running constantly in the background, everything feel snappier.

On my gaming rig, HPET On (for this test purpose only):

DPC Latency is ~100us at 1ms timer resolution (default with DPC Latency Checker running, Windows default is normally 10ms)

DPC Latency is ~10us with some peak at 100us at 0.5ms timer resolution (maximized)

Entering a game normally bring timer to 1ms but you can improve it even more with this application running in background to 0.5ms. Depending the game and your system you may feel better responsiveness and less stuttering.

Link to comment
Share on other sites

  • 3 months later...

Hi everyone. I just registered to this site cause I had to ask something.

On my PC, when I run WinTimerTester this is what I get:

35aubs1.jpg

Now, I just re-installed the OS, and I HAVE NOT messed with the command provided here. (nor has anyone else)

So what does that mean? (I just "discovered" this cause I was messing with my BIOS options, you know, to "squeeze" a little bit more of performance out of my machine) So reading about that option (HPET) led me to this discussion.

(By the way, it was enabled by default)

Thanks in advance.

Link to comment
Share on other sites

  • 1 month later...

By default Windows 7 uses different timers in the CPU to calculate stuff. HPET is the newest and best of these timers, but because of default combination of timers it takes longer time for CPU to keep up all the timers and sync between them. Forcing Windows to use HPET only improves performance and leads to greater FPS.

Steps to enable this tweak:

1. Enable HPET in BIOS. If you have HPET option in BIOS then your hardware can support HPET.

2. Enable HPET in Windows by giving this command in admin credential CMD:

bcdedit /set useplatformclock true

3. Reboot

I just registered to share my results.

With HPET ENABLED

post-484104-0-63586600-1362997125.jpg

And with HPET DISABLED

post-484104-0-88861800-1362997164.jpg

Link to comment
Share on other sites

  • 8 months later...

I guess everyone has heard by now that by default at least in many Intel systems but also AMD the installation (of win7) is wrongly configured to use software timers. 

 

That causes lag especially in games but other programs as well, as HPET is the only timer that is able to sync perfect ratio of 1:1. Thats why it's developed in the first place.

 

Research on the issue, and face the fact, that if your not already configured to use hardware timer (hpet), one needs to do so, by:

 

 

Open a admin command prompt

Type "bcdedit /set useplatformclock true". Reboot. Also make sure that HPET is enabled in bios.

 

 

For those who uses 32-bit Win 7 this hotfix is available:

http://support.microsoft.com/kb/2799603/

 

 

The bug with Win 7 using software timers (very bad!) was actually properly found and confirmed when Win 8 RTC bug was found:

http://www.techpowerup.com/189607/windows-8-rtc-bug-isolated-fixed.html

 

But I knew it long ago. Sorry guys that I wasn't able to provide the hotfix link for 32-bitters when I originally posted this topic.

 

 

For the skeptics, here is a benchmark of HPET in use and not in use, the numbers speak for themselves:

 

djqt.png

 

As it can be seen, one gains 10% performance increase for GPU (higher is better). And also gains a bit of disk performance (lower is better), especially for SSD's. No change in CPU, but if there would be, it would be same trend as with GPU and disk.

 

Enjoy your HPET!

Link to comment
Share on other sites

  • 2 weeks later...

Thanks allot hardbag!

For all this time HPET have been activated but in 32 bit. Changed it to 64 bit. And in windows my clock have been on 2,6 Mhz: Lowest possible! The QPC/GTC ratio was not 1 either.
Now after the change my clock is on 14.31818 MHz! The timing is closer to 1 but not 1. When I start the counter the ratio is 0.9991 to 1.0001. After about 10 query counts it stabilizes at 0.9997 to 1.0001 and at 30 counts ratio is at 1. Is this normal. Is it bad? How do I know if I got the software timer bug? I run on Win 8.1.

Link to comment
Share on other sites

  • 2 weeks later...

That the timer measurer hovers just a tad lower of 1 or tad higher than 1 is normal, like the numbers you posted, it is normal and you have the hardware timers in use and pretty much the best sync that can be achieved.

 

Of course, those who play online games, timers in general, should benefit from HPET, so it's a test and see. But other factors, other "tweaks" might interfere there then remember! If one has made for example ipconfig or Nic "tweaks".

Link to comment
Share on other sites

Thanks A LOT for this extensive, detailed information hardbag! Yet another tweak up our sleeve, now rolling lightning fast on AMD chipset! I will not forget this.

Merry christmas and have a great year folks!

Link to comment
Share on other sites

  • 2 weeks later...

@Neowinian

Can you post your PC Hardware configuration, which motherboard do you have?

Also, not all motherboards (even when their CPUs support HPET) support it - Intel motherboards with G3x chipsets don't support HPET in their BIOSes, for the most part; the same is true of G31's successor, G41 (that is despite that LGA775 CPUs mostly support HPET) - this "flaw" was corrected in Gx3 (G33/43).

Link to comment
Share on other sites

Hello,

(I know this thread has been recently bumped)

Well after 5 pages we finally see some benchmarks (although no source; I could create that in Paint and say it was legit).

That being said, some sources would be nice. Some user on the internet saying "blah blah blah" really isnt enough IMO for anyone to do this tweak. Also many have posted mixed results.

Link to comment
Share on other sites

Hello,

(I know this thread has been recently bumped)

Well after 5 pages we finally see some benchmarks (although no source; I could create that in Paint and say it was legit).

That being said, some sources would be nice. Some user on the internet saying "blah blah blah" really isnt enough IMO for anyone to do this tweak. Also many have posted mixed results.

 

I think this whole thing is mostly a myth. I've yet to see any definitive proof or articles outside of random forum posts. I would need to see actual FPS improvements to believe it. The speculative basis for this is that HPET has less overhead to setup than the more conventional PIT timer. What you do in preemptive multitasking is schedule interrupts and switch context to new tasks when an interrupt occurs.

 

Presumably, originally, when using PIT timers you'd just statically setup interrupts to occur over and over forever at a smaller interval than what an actually needed because it was too costly to keep setting up new one-shot interrupts. HPET on the other hand isn't very costly to setup so you can do on-shots at the actual interval you need. This supposedly reduces overhead in scheduling (this bit of information is from here: http://en.wikipedia.org/wiki/High_Precision_Event_Timer).

 

Logically this makes sense when consolidated with the idea that Windows 8 introduced dynamic timer ticks. HPET timers would easy implementing this feature because of the fact that they allow low overhead one-shot timers to be scheduled. Where as, it would be difficult to have a dynamic tick if you forced to have to statically schedule a constant interrupt when using PIT timers.

 

The reason I'm skeptical is because I don't think scheduling noise/overhead is different enough between the timers to see any sort of real-world improvements. 

Link to comment
Share on other sites

Well, take it or leave it, I only offer information here.

 

(the benchmark ^^^above was made with: NV560Ti @900/2394 ATI4890, Intel 2600K @4600 MHz, ASRock Z68 Extreme3 Gen3, 2x4GBCorsairVengeanc1600)

 

The HPET tweak/bug was found and confirmed with Win8 benchamarks and led Win8 to be kicked from some benchmarking sites. Some Windows installations, depending on hardware, set to software timers instead of HPET, and that's why those benchamarks weren't allowed on charts.

 

There are of course some games that don't benefit from HPET, that's due more of the games devs not HPET itself. Mind you that in those cases the HPET issue might be fixed in some update.

 

However majority of games and applications are HPET aware and HPET enabled and HPET set, as HPET has been around since Vista.

 

I posted this link before, and I'll post it again for everyone to see what the fuss is about:

 

http://www.techpowerup.com/189607/windows-8-rtc-bug-isolated-fixed.html

 

If you have in device manager under system devices a device called "high precisions event timer" - then you're hardware supports it and most likely is using it. In most BIOS'es HPET is automatically on. To sync it properly with OS (and between hardware) use admin CMD and command bcdedit /set useplatformclock true

 

Search internet about this issue to get further information.

If needed, search your game forums too, email the devs etc.

 

Mind you also that in as we speak and in the future everything will be HPET. If some game doesn't get the effects it's not the fault of greatness of HPET. Getting a WHQL label requires HPET sync. Albeit HPET is the new new, one can search for "Invariant TSC" too.

 

 

Here is a Microsoft link:

http://msdn.microsoft.com/en-us/windows/hardware/gg463347.aspx#ECD

 

http://msdn.microsoft.com/en-us/library/ee417693.aspx#background

 

 

 

For pre-Vista and early Vista hardware the setting in OS doesn't make much of use, but for newer hardware and software the effects are there. Also it's a different thing having HPET enabled in BIOS, and setting it in OS too. Post Vista hardware and software should benefit from HPET on in BIOS and in OS.

 

btw, there is a new command for Win 8/.1, "bcdedit /set disabledynamictick yes" - search the internet for more on that.

 

 

Btw2, here is program that hasn't been yet linked in this thread:

http://www.resplendence.com/latencymon

 

Other:

WinTimerTester 1.1
http://www.mediafire.com/?xzo9n84d8lze9nb
http://www.sendspace.com/file/xadvhe

 

DPC Latency Checker (not Win8 compatible)

http://www.thesycon.de/deu/latency_check.shtml

 

Nvidia app

https://developer.nvidia.com/content/timer-function-performance

 

Timer Resolution (small app for those who want to play and test around)

http://www.lucashale.com/timer-resolution/

 

And yet another app to see if one benefits from HPET

PC Clock Timing 

info: http://www.satsignal.eu/software/net.htm

download: http://www.satsignal.eu/software/PCClockTiming.zip

screenies:

PCClockTiming-Vista-table.png

 

PCClockTiming-Vista-graph.png

Link to comment
Share on other sites

what i find hard to believe is that, even after this all time, if HPET did make a huge difference (or some difference, anyway) then why isn't wide implemented? I mean i never saw a current board with the HPET option (enable / disable), never mind the fact that in current day to day use the performance is probably very minimal, if not insignificant.

Link to comment
Share on other sites

If your CPU supports "Invariant TSC", then perhaps it's better to have HPET off on OS.

 

Praetor, it depends on hardware, some benefit more, some less, some nothing. For some games/applications it can make a big difference.

 

I think I'll rest my case here. The program that I posted with screenies, it's a good one to measure performance with HPET on and off.

Link to comment
Share on other sites

If your CPU supports "Invariant TSC", then perhaps it's better to have HPET off on OS.

 

Praetor, it depends on hardware, some benefit more, some less, some nothing. For some games/applications it can make a big difference.

 

I think I'll rest my case here. The program that I posted with screenies, it's a good one to measure performance with HPET on and off.

 

Let me be perfectly clear: you haven't shown that it has _any_ real world benefit in games or applications. That's my problem with statements like this. Don't make claims unless you can back them up with actual evidence. Your results have fundamental flaws that make them completely pointless from the perspective of real-world performance:

  • Measuring the performance of specific system calls is well known to not translate into real-world performance because this doesn't account for slack in scheduling or program hot spots. If 0.01% of your program time is spent in a system call, then the performance is completely negligible and you don't care.
  • The GPU is not saturated in your examples. In practice, FPS is dependent solely on resource saturation because your bottleneck is your performance limiter. You can't measure the performance when the system isn't saturated and expect that relationships observed to hold when the system is saturated.
  • You are using homogeneous straight-line code which is a completely different type of workload from any real-world application. The performance of real-world applications are dependent on what they are actually doing.
  • Latency is unrelated to throughput so DPC latency isn't necessarily indicative of performance. Higher latency doesn't translate into lower throughput so the results of a latency analysis are meaningless without a context.

Your results are akin to benchmarking a PC for maximum performance and then incorrectly assuming that all or typical workloads will be faster. The only way to show that typical workloads are faster is by benchmarking those workloads. In the same vein, the only way of showing better general performance in gaming or applications is by benchmarking games or applications.

 

Moreover, you are also making completely misleading statements in your prior post. HPET is transparent on the application side unless for very specific reasons you are using a timer. Otherwise, it literally has nothing to do with applications. It has everything to do with scheduling interrupts at the OS level. And getting a WHQL sticker is related to hardware support for HPET nothing else.

 

Furthermore, the discussion about the timers in gaming has nothing to do with performance (or HPET) and everything to do with getting rid of bugs because of hardware timer misuse. This isn't restricted to gaming, it's an issue in all programs. Programmers simply don't understand how preemptive task scheduling affects the use of the RDTSC hardware timer and as result they use it incorrectly. There are subtle gotchas with using it and you really need to understand the hardware to be able to use it correctly. MS is simply telling programmers to not use it directly and to instead use a safe provided windows wrapper.

  • Like 3
Link to comment
Share on other sites

I can't see why games would have to be coded to take advantage of HPET, or any other app. It should just be a more accurate clock source the OS uses through the normal timer APIs (Which have always sucked on Windows, 16ms resolution by default? :laugh:)

Link to comment
Share on other sites

I can't see why games would have to be coded to take advantage of HPET, or any other app. It should just be a more accurate clock source the OS uses through the normal timer APIs (Which have always sucked on Windows, 16ms resolution by default? :laugh:)

 

The only case is if they were using a timer for to update or check something every N seconds or such. It wouldn't be a performance issue at that point, it'd be an accuracy and resolution issue with the timer at that point like you said.

Link to comment
Share on other sites

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

    • No registered users viewing this page.