[Tip] TimerTool - Low DCP Latency, More FPS

I was having problem with audio desync (not in RetroArch) and discovered that high peaks of DCP latency were the cause. By closing the qBittorrent app has resolved, but the latency could be further reduced.

Using the tool TimerTool, that reduce the default Windows timer resolution (15.6 ms) to 0.5 ms, the PC performance was improved.

TimerTool OFF

TimerTool%20Off

TimerTool ON

TimerTool%20On

The low latency could increase the FPS.


TimerTool

DCP Latency Checker

https://www.thesycon.de/eng/latency_check.shtml


Can this be implemented in RetroArch?

As I understand it, that’s related to kernel-level device drivers, which is out of our scope.

Ok.

So there stays my tip to everyone.

:slightly_smiling_face:

1 Like

For those who wants to start the TimerTool in background when Windows start up, I made a batch file to create a task in Task Scheduler.

Download

  1. Place the TimerTool folder in drive C.
  2. Run “Task Scheduler - Create” as administrator to create the task.
  3. Run “Task Scheduler - Create” as administrator to delete the task.
2 Likes

I’m curious about this and it would be really nice if you could post your experience here with a little more technical information on how it improves your PC while gaming, emulation, other applications that may be benefited from this.

Thanks @lfan! Is this still relevant in Win10? I believe an update from Sept 2018 in the official site says it isn’t, but I do not understand the core of this hack, sl don’t know… How would I tell if I am getting improvements? (something that I can check/compare visually). Does this “hack” has side effects in the PC (in the long or short term)?

@aorin1 @Kondorito

The problem was in the desynchronization of audio in any video I opened. I tried updating and reinstalling drivers, I changed my audio player to VLC, but nothing solved. I also noticed slight clicks in the audios, when the desynchronization began.

The DCP Latency Checker program showed me that my PC had frequent latencies that went above 2000 us. Searching on Google and YouTube, I found positive reports about TimerTool, so I decided to test it and I approved it because it fixed the problem.

I tested with the Mario Kart - Double Dash!! and the game ran out of lags, more fluid.

Worth testing and deciding.

My PC Specs:

Microsoft Windows 10 Pro 10.0.17763.316 (Win10 RS5 [1809] October 2018 Update)
Gigabyte GA-990FXA-UD5
OctalCore AMD FX-8370, 4329 MHz (21.5 x 201)
2 x G Skill RipjawsX F3-2133C10-8GXM (16 GB)
Sapphire Radeon HD 6870
ST2000DM001-9YN164 ATA Device
ST3000DM001-1CH166 ATA Device

Thanks :slight_smile: I will give it a shot !

:grinning:

Depois nos diga se obteve bons resultados.

It’s not. It should be normal practice for timing sensitive applications (such as emulators) to call TimeBeginPeriod(1) to put the timer resolution at 1ms. Otherwise any waiting loop, throttle function etc is only guaranteed to have a precision of the default Windows timer at 15.6ms. Which I don’t have to explain is bad for emulation purposes.

I would be very surprised if Libretro does not already set the timer resolution at the mimimum* somewhere in the code base.

And if it doesn’t the API for doing so is documented here:

timeBeginPeriod function

*Note that Microsoft supports a minimum period of 1ms through this API. To put it lower at 0.5ms (like the mentioned TimerTool does) can only be done by using an undocumented feature, which is not adviced for good reasons. Also don’t forget to call timeEndPeriod on application exit to return the timer precision back to the default (otherwise power is needlessly consumed).

1 Like

Just to make sure I did a little check and as I suspected, per my previous post, Retroarch already correctly sets the timer granularity to 1ms on startup (and reverts it on exit back to the Windows default of 15.6ms).

You can check this by starting timertool after retroarch has started, it will read 1ms. Close timertool, close retroarch, start timertool and it’ll be back at 15.6ms.

Do note that having other programs open like browsers etc, may change results as they also tend to set timer granularity. And since it’s a system wide setting… :wink:

Anyway, no worries about RA, it does things wisely.

3 Likes

Yes, I had already tested it. Your observation was great.

RetroArch could reduce to 0.5 ms…

:yum: