[wdmaudiodev] Increasing Timer Resolution results in erratic Scheduling/DPC Latencies on Windows 10

  • From: AI Developer <developer@xxxxxxxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 7 May 2019 09:03:38 -0500

We've come across a few Desktop PCs (and at least one MacBook Pro running
BootCamp) where this happens.

It doesn't matter how the resolution is increased, whether from user mode
by timeBeginPeriod() or in kernel mode via ExSetTimerResolution() - the
result is the same.

Once the resolution is increased, from time to time (with a gap of  5 - 30
seconds), there will be scheduling delays.

The delays can be seen in various forms (all coinciding):

- LatencyMon (from Resplendence) reports an Interrupt to Process latency of
about 10 - 12 milliseconds from time to tim.
- Our NDIS Protocol driver receives network packets about 10-12
milliseconds late from time to time.
- A simple user mode program calling Sleep(1) will wake up after 10-12
milliseconds from time to time.

[Needless to say, this results in audio dropouts]

At the same time, LatencyMon does not indicate any specific DPC or
Interrupt taking a long time (max. reported is about 500 microseconds).

Also checked with Windows Performance Toolkit (xperf). Once again, there's
no indication of any driver spending that much amount of time in ISRs or
DPCs.

Further, I've tried disabling all non-essential devices (WiFi, Ethernet,
BlueTooth, Audio devices, other USB devices) and services (VirusScan,
FireWall, etc..) and background apps.

LatencyMon suggested disabling Power Throttling (also did that), and
updating the BIOS (also did that). But that also didn't help.

Also tried disabling dynamictick, and enabling platfrom clock, etc.. Once
again, none of this helps.

I'm surprised that this has not come up before!

Any suggestions on where to look for or how to solve this would be greatly
appreciated!

Thanks.
Devendra.

Other related posts: