How to Diagnose and Fix High DPC Latency Issues with WPA (Windows Vista/7/8)

This tutorial will show you how to identify drivers causing high Deferred Procedure Call (DPC) latencies. Spikes of high DPC latency can cause a computer to slow to a crawl for a few seconds before speeding up again in super-speed to catch up, then repeating a number of seconds later. During the few seconds of slowness (high latency spike), you may notice jerky and erratic mouse movement, poor quality, stuttering, audio, and pausing and skipping in real time video playback. If these symptoms sound familiar, read on.

The technique outlined below will work on Windows 7 and Windows 8. It will not work on Windows XP, but an alternative for Step II has been briefly outlined at the bottom of this tutorial for Windows Vista.

In addition, this technique is fairly technically advanced. Although it should be perfectly possible for anyone to complete provided you follow carefully the instructions given, if you require further clarification of any particular steps, or run into any sort of difficulties, please do not hesitate to ask us for help.


Step I (optional): Making a Quick Diagnosis:
[This part is not yet possible on Windows 8 computers. If you are using Windows 8, please skip ahead to Step II]

This step will allow you to quickly and easily determine whether or not high DPC latencies are indeed a problem on your computer. It is not necessary to perform this step, since it will not show you the cause of any DPC latency spikes it does find. Step II will be used to determine the cause any of such problems, and so you may wish to skip ahead to Step II now.

1. Download and run DPC Latency Checker from this website: DPC Latency Checker

2. Allow it to run until you have experienced a period of lagging and computer slowness. It is important to allow the program to run through such a time period in order to make a proper diagnosis. Having it running only whilst the computer is performing normally is not nearly as effective.

3. Analyze the graph for a large spike into the reds. A healthy graph will remain in the green section, and will look similar to this:
1.PNG

A graph containing spikes into the red (indicative of a DPC latency problem) will look similar to this:
2.png
Now identify whether or not you have a DPC Latency problem using the graphs given above as a reference. If you do, continue on to Step II to identify the cause of this problem.



Step II (if necessary): Identifying the Cause:
[This technique is not possible on Windows Vista computers. If you are using Windows Vista, please skip ahead to the end of this step for a briefly outlined alternative.]
This step will use the Microsoft Windows Performance Analyzer from the Windows Assessment and Deployment Kit (ADK) to identify the cause of any DPC latency spikes.

1. Download the ADK from this website: Download Windows Assessment and Deployment Kit (ADK) for Windows® 8.1 from Official Microsoft Download Centre
Ignore the reference to Windows 8.1. This download applies to both Windows 7 and Windows 8.

2. Run ADKSetup.exe and allow it to initialize past the splash screen.
[The following screenshots may be expanded by clicking on them if registered]

Click Next:
3.PNG


Click Next again (you may opt in to CEIP if you so wish - it is not necessary, but you may wish to do so):
4.PNG


Click Accept:
5.PNG


Alter the checkmarks to be next to the following box only:
Windows Performance Toolkit

and click Install.
10.PNG


Allow the install to complete:
11.PNG


and finally click Close:
9.PNG



Part 2:

[Windows 7] Click on the Start Orb, search for cmd, and press Enter.
[Windows 8] Swipe up or right click on the Start Screen, select All Apps, swipe or scroll to the right, and under the Windows System section, open Command Prompt.

Now, in Command Prompt:

Type out the following line and press Enter:
xperf -on DiagEasy

Nothing much will appear to happen, but xperf is now logging. Wait until the computer has gone through a period of stuttering slowness, and then type out the next line and press Enter (this line may take several seconds to process):
xperf -d %userprofile%\Desktop\trace.etl

Finally type this line and press Enter:
xperf %userprofile%\Desktop\trace.etl

If you get prompted the following message, select Yes:
1.PNG



A new window will now open, and after initializing, will containing several graphs.

Scroll down to the graph titled DPC CPU usage, right click on it, and select Summary Table. The example graph show below comes from a healthy computer, yours is likely to show much larger spikes and a smaller scale on the % usage axis.
2.PNG



A final new window will open containing a list of drivers. This list is already correctly sorted (by the Actual Duration column). The driver on the very top of the list is therefore likely to be the cause of your problem. Note down its name from the leftmost column.
3.PNG



You may now close both Windows Performance Analyzer windows and go back to the Command Prompt.

Type the following line final line and press Enter:
del %userprofile%\Desktop\trace.etl

Now close the Command Prompt window.


Part 3:

Now you need to fix the problem. With the driver name in hand, first try to identify where it comes from. Our Driver Reference Table (located here: Driver Reference Table) will help you with this task. It is a large database of many common drivers, and it is likely that the driver you are searching for is there. If you are, however, unable to identify the driver there, please do not hesitate to ask us for help.

Once you have identified the driver, you need to update it from the manufacturer's website. The Driver Reference Table should point you to such a website for the drivers that are contained within it.

Just download and install the latest version of the driver, and hopefully your DPC related problems will be resolved.


However, if they are not resolved, you continue to have problems after updating the driver, or you continue to experience other problems, please do not hesitate to ask us for assistance, providing as much detail as is possible. You will be required to register with this forum before you are able to create a new thread (you can register here: Register at Sysnative Forums), but this process is quick and completely free.



Alternative Step II for Windows Vista

As an alternative to Step II for Windows Vista computers, you may use a program called LatencyMon which can be downloaded here: Resplendence Software - Free Downloads

Once installed, start LatencyMon from the Start Orb > All Programs > LatencyMon.

In the top left hand corner of the window which opens, click on the green start button (highlighted in the image below). Then navigate to the Drivers tab, sort by the Total Execution (ms) column, and wait until the computer has gone through one of its periods of lagging or stuttering. Finally, read off and note down the driver at the top of the list, and continue with Part 3 of Step II.

4.PNG
 
Last edited:
Hmm..

Thanks for the file. I will look at that when I get a free moment. Although I'm not sure when that'll be, because I am busy with school work and revision atm.

Regarding DPC Latency Checker, no, it is not Windows 8 compatible.
 
For those experiencing issues with Windows 8.1 and this tutorial...

Please install this version of the Windows ADK - Download Windows Assessment and Deployment Kit (Windows ADK) for Windows 8.1 from Official Microsoft Download Centre, instead of the one given in the tutorial.

And perform the remaining steps in the tutorial again.

Thanks for that Stephen! Tutorial updated.

No problem.

I am looking into more advanced XPerf and Windows Performace Toolkit techniques, especially with Windows 7 and newer, to get an even better look at these DPC issues. :)
 
well i finally got around to installing the the newer assessment and deployment kit. But i get this error:
C:\Users\Admin\Desktop>xperf %userprofile%\Desktop\trace.etl
xperf: error: C:\Users\Admin\Desktop\trace.etl: The parameter is incorrect. (0x80070057).


Microsoft (R) Windows (R) Performance Analyzer Version 6.3.9600
Performance Analyzer Command Line
Copyright (c) 2013 Microsoft Corporation. All rights reserved.


Usage: xperf options ...


xperf -help start for logger start options
xperf -help providers for known tracing flags
xperf -help stackwalk for stack walking options
xperf -help stop for logger stop options
xperf -help merge for merge multiple trace files
xperf -help processing for trace processing options
xperf -help symbols for symbol decoding configuration
xperf -help query for query options
xperf -help mark for mark and mark-flush
xperf -help format for time and timespan formats on the command line
xperf -help profiles for profile options

then i tried this
C:\Users\Admin\Desktop>xperf trace.etl

and got the same error
 
well, i found windows performance analyzer and opened the etl file. but there is no dpc latency cpu table. so i went to the 'computation' graph in the left hand column and double clicked to get a big view. in the top blue bar on the right edge are 4 icons one of which says 'display table only' when you hover over it. selecting this gives the table. now the highest count is held by a process named idle, then crss.exe followed by steam.exe then explorer.exe. if i look at the column titled 'ready(us) sum' the highest three are 'system, explorer, and steam'. The highest three for 'ready (us) max' are 'egui (part of nod32 antivirus), dtlite(part of daemon tools) , and vds.exe. right clicking on a column name gives many more parameters that i can examine but i do not know what they mean. So how do i interpret this data? Which parameter is most useful in figuring out if my latency is being damaged by a particular process?
 
well i finally got around to installing the the newer assessment and deployment kit. But i get this error:
C:\Users\Admin\Desktop>xperf %userprofile%\Desktop\trace.etl
xperf: error: C:\Users\Admin\Desktop\trace.etl: The parameter is incorrect. (0x80070057).


Microsoft (R) Windows (R) Performance Analyzer Version 6.3.9600
Performance Analyzer Command Line
Copyright (c) 2013 Microsoft Corporation. All rights reserved.


Usage: xperf options ...


xperf -help start for logger start options
xperf -help providers for known tracing flags
xperf -help stackwalk for stack walking options
xperf -help stop for logger stop options
xperf -help merge for merge multiple trace files
xperf -help processing for trace processing options
xperf -help symbols for symbol decoding configuration
xperf -help query for query options
xperf -help mark for mark and mark-flush
xperf -help format for time and timespan formats on the command line
xperf -help profiles for profile options

then i tried this
C:\Users\Admin\Desktop>xperf trace.etl

and got the same error

Try

xperfview %userprofile%\Desktop\trace.etl

instead of

xperf %userprofile%\Desktop\trace.etl
 
C:\Users\aDMIN\Desktop>xperfview %userprofile%\Desktop\trace.etl


'xperfview' is not recognized as an internal or external command,
operable program or batch file.

BUT WPA WORKS

C:\Users\Admin\Desktop>WPA %userprofile%\Desktop\trace.etl


for windows performance analyzer

still need more insight into what to look for
 
C:\Users\aDMIN\Desktop>xperfview %userprofile%\Desktop\trace.etl


'xperfview' is not recognized as an internal or external command,
operable program or batch file.

BUT WPA WORKS

C:\Users\Admin\Desktop>WPA %userprofile%\Desktop\trace.etl


for windows performance analyzer

still need more insight into what to look for


I also need this answered please I am stuck on this as well, thanks!!
 
Naviagte to

C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\

or

C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit

(not sure which one it will be)

And see if there's a file called xperfview.exe

Sorry I can't be more help atm, I don't use Windows 8 or 8.1 - I'm still running Windows 7 here!

Stephen
 
Make sure you start cmd.exe (command prompt) using "Run As Administrator". I had the same issue with running xperf.
 
Hi,

i followed Niemiros tutorial and the process that seems to cause the problem seems to be "ntoskrnl.exe" i'm runnig on a Gigabyte p35-de3r mainboard with a gforce 8800gtx and win7 home prem. I had no problems of this type with my previous installation. I ran Latencymon everytime after installing win7 clean, with chipset drivers, with nvidia driver and after doing the 100 updates. From the very beginning till now Latency mon and DPC Latency are showing that "ntoskrnl" is having a high latency and couses the sound to pop. I adjusted one systemstart in savemode via "Msconfig" and the problem was gone. So i know none of my hardware is broken. I really need to solve this one to get to work again.

latencymon save.jpg save mode
latency .jpg common
 
Hey.
I had problems with sounds and mouse stuttering for a long time now, yesterday i finally learnt about the dpc latency thing. I managed to find the driver responsible for this.
It's called "wdf01000.sys" (http://screenshu.com/static/uploads/temporary/vf/nf/4a/i0ryo6.jpg)
I searched for information about it, and all i found is that it's responsible for "Kernel Mode Driver Framework Runtime" and that it can be updated with windows update
Sadly, there are no updates for it available, and i can't disable it.
Anyone, please help.
I'm on windows 8.1, 8gb ram, i5 4670k CPU.
 
Thanks a lot for the 1st post. I managed to clean my creative soundblaster drivers, its ctoss2k.sys was giving me a lot of latency. The effect this latency is having on my computer is that if I leave my pc idle, after exactly two minutes, my screen starts to get a low FPS (8-10 frames per second) and in my Windows 7 OS itself, no matter what software I'm running or not. The moment I move my mouse or press a key the low FPS dissapear and everything returns to normal.
Sadly NVidia drivers are giving me high latency as well even wih the last version of their drivers 337.88
And the most intriguing driver with a high latency is one that XPerf is not able to identify marked with a ? as show below. Does anyone know what program I could use to identify what stealth driver this is and how to delete it?
final.png
 
Thanks for posting this in depth guide, but sadly I could not fix my issue. I have a thread open currently about it
 
Sorry this maybe a stupid question but what and where do I click on "start orb" Do I even have the right program downloaded wpa.jpg
 
OOOOOOOOOOOOkaaaaaaaaayyyyyyyyy. . . everything went super peachy up until the part I was supposed to note down the driver causing the issue. Turns out the name of the driver is "?" and it's function, likewise, is "?" Any idea what I should do with this?
 
Back
Top