Chủ Nhật, 22 tháng 11, 2015

Disable HPET(High Precision Event Timer)

**UPDATE March 9th 2015**
        I've recently learned that some apps will override or change timing resolution while they are running even if timer resolution is set to maximum 0.500. Example: google chrome is built to run on mobile devices and is designed to save on power and changes timer resolution to 1000. What this means... say in battlefield 3, 4, and hardline, you need to have a browser open to use battlelog to join a game. If you do not close the browser and the game has loaded your timer resolution will be at 1000 not 0.500. So make sure you close google chrome after you are ingame or it says loading level.

    Deferred procedure calls (DPC(s) Latency) (usually in bios) allow programs to queue actions to be done quickly in the processor scheduler, and they hang the whole computer until they get processed.
    For example, drawing a video frame on a screen needs to be done as soon as the data is ready and the frame time is reached. This is all done in fractions of a second and isn't noticed by many people but actually effects the following...
  • When you click the mouse till the action actually happens on the screen.
  • Where the network data tells your PC they're location and when it actually happens visually which can be inaccurate.
  • What your monitor is showing you isn't really happening in real time, hence leading shots in older games. Same thing but in a different way.
    Disabling HPET allows an unrestricted input output to occur and results in a very raw and extremely responsive connection between you and your machine. It also removes a ton of micro-stuttering and screen tearing.

1000us = 1ms
HPET ON: between 100-150us delay
HPET OFF: between 5-15us delay

    Even though it doesn't seem like much, but imagine every action and each PC component is effected by that same 100-150us delay, It can add up to MANY milliseconds and significant performance loss. The end result is, to higher end players, another step forward is crispier and snappier inputs and actions across the board.

Disable High Precision Event Timer (HPET) in BIOS
    "The problem" section. 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.

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.
    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.
Results with DPC Latency Checker:

HPET 64-Bit ON: between 100-150us
HPET OFF: between 5-15us

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

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

Maximize your Windows timer resolution
    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.

Disable CPU Enhanced Halt (C1E), EIST (SpeedStep) & Cool'n'Quiet in BIOS

    CPU Enhanced Halt (C1E) & EIST decrease overclocking reliability, create DPC latency spikes and hiccups in some circonstances.

Gigabyte motherboards note

    Depending on your model & BIOS, Intersil power controllers may be defaulted to intermediate hardware power management, creating high DPC latency under some circonstances. Only way I found to fix that was to install Gigabyte Dynamic Energy Saver, turn it On then Off. Now optimal performance, minimal power management are set (even if you reinstall Windows). You can uninstall DES or disable the associated service after this is done. This may apply to other mobo manufacturers using similar PWM controllers and softwares.

Remove AMD CCC.exe & MOM.exe from automatic startup and/or kill process before gaming (single card & CrossFireX)

    CCC.exe can increase DPC latency, you can check that with Resplendence Tools (LatencyMon) & DPC Latency Checker. Shut down that bitch and her mother (MOM.exe), you will get some additional fps from it. The slower your computer the bigger the increase in responsiveness and stuttering reduction, dual core benefit the most.

Right-click taskbar> Start Task Manager > right-click CCC.exe> End Process> right-click MOM.exe> End Process.

    Install AnVir Task Manager to easily untick CCC from startup. CCC can still be opened from right-click on desktop to change settings if needed, just kill the processes again after your changes.

Original Thread without my edits

Không có nhận xét nào:

Đăng nhận xét