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:
Thanks a lot for this step-by-step procedure

I have just bought a new laptop (I73630QM, 8GB RAM, SSD drive, ...) and have noticed some drop-outs of the sound. Quite surprising for such a configuration.. Let me mention that I am running Windows 8 (I've read somewhere that Windows 8 is famous for latence issues. But it sounds really weird to experience those problems, that I did not notice with my previous Windows Vista Core Duo 1GB RAM laptop....)
I am musician, that's why latency is critical for me.

I have performed the procedure you described, only listening to some music through SoundCloud - Share Your Sounds. I have only noticed 1 drop-out at the end of the test. (and yes, the audio file was fully downloaded, so the issue is unfortunately not as simple)

I ended up with the following drivers being listed behing the DPC CPU:
- USBPORT.SYS (21ms)
- ndis.sys (10ms)
- acpi.sys (1.2ms)
- dxgkrnl.sys (1.1ms)
- tcpip.sys (1ms)

Always plugged in USB ports, I have my sound card (Fast Track Ultra 8R on USB2.0), and 1 mouse. I also have 2 ports USB3.0 which I don't really use so far.

Do you have any idea on why this happen?

Thanks a lot for the help !
 
Niemiro, thanks for such a detailed and complete procedure for debugging performance problems. "DPC" seems to be the most common suspect. On this PC, the mouse would feel like it dragged through mud, iTunes, winAmp, MediaMonkey couldn't play anything without it getting horribly broken and distorted.

These tools showed a peculiar, very regular, spike of activity on the wifi connection. The culprit causing all these problems was the Dell livetile! That thing was going back to Dell several times a second even while I was in desktop mode, and updating suggestions on getting started with Windows. Once I picked that tile and uninstalled it, suddenly everything ran smoothly again.

So much thanks for helping solve this, and it's sick that it was Dell's own "getting started" livetile that was killing Win8's operation.

Andy
 
Don't know why I didn't notice this before. Thanks much Niemiro. Btw, while it's good to look at the Actual Duration column, which shows the cumulated amount of time spent on DPCs for the duration of the logging for that particular process/thread/function, it's also worth noting the Max Actual Duration and Average Actual Duration. A high Actual Duration just shows that the particular entry is doing a lot of DPC work, but the Max/Avg Actual will actually tell you how long it's taking for each DPC, therefore giving a real perspective on DPC latency. From what I understand, a DPC should only be taking 100 microseconds (that's 0.1ms in the columns) maximum.
 
I am a bit curious about this. I ran these procedures on 5 different machines and in each case, usbport.sys topped the list of potential offenders. And sadly, also in each case, the latest drivers were installed.

Since virtually all keyboards and mice use USB today, and both of those devices need regular and constant sampling, I wonder how that plays into this. Note none of the 5 were experiencing any noticeable problems, all have some red in DPC checker (typically under 4,000).

I might dig up an older system that accept PS/2 inputs for both keyboard and mouse and see what happens.
 
@ WhiteG: I asked for the thread split; partly because an earlier poster, leopardizer, got zero replies here, and partly because I prefer to think that users deserve their own thread as all Windows installs end up being close to unique, as their users are.

This is a 'help yourself' kind of thread, a howto; if anyone need help on specifics, create your own topic as all helpers will then feel free to help out if and when they can.
 
and partly because I prefer to think that users deserve their own thread as all Windows installs end up being close to unique, as their users are.
Users (and problems) DO deserve their own thread - not only because of the reasons you state (every Windows machine becomes unique within the first couple minutes after first boot) but to avoid confusion for the OP and for those helping.
 

Hi, i have tried to do the above but when i enter the xperf command in cmd i have this message - nt kernel logger - access is denied. Please let me know what to do. I have had a high latency problem on my laptop and this causes a problem when i try to record music through an 8 track as i get constant dropouts. I gave up finding a solution and then came across this site so i really hope this works!! thanks for any help.

Nick
 
Hi Nick and welcome to Sysnative!

It's best if you create your own topic about this; give full details there of your OS/Service Pack# and the hardware in your PD or model# if it's a pre-built system or notebook.

Attach a LatencyMon image as per the settings/image at the bottom of the Sticky's original post, if you can.
 
Hello! Made an account for this because this looks like it could potentially solve my sound distortion problems (and maybe insanely low framerate drops in games?). I'm pretty new to this kind of diagnostic stuff but not bad at computers or anything. I wasn't quite sure what "xperf" was and it wasn't originally working in my command prompt. I looked it up and just downloaded all of "Windows SDK for Windows 7 and .Net Framework 4" because I didn't want to have any chance of this not working. Although, I am now stuck because it keeps saying "A problem occurred while installing selected Windows SDK components." Any help would be much appreciated.
 
Hello! Made an account for this because this looks like it could potentially solve my sound distortion problems (and maybe insanely low framerate drops in games?). I'm pretty new to this kind of diagnostic stuff but not bad at computers or anything. I wasn't quite sure what "xperf" was and it wasn't originally working in my command prompt. I looked it up and just downloaded all of "Windows SDK for Windows 7 and .Net Framework 4" because I didn't want to have any chance of this not working. Although, I am now stuck because it keeps saying "A problem occurred while installing selected Windows SDK components." Any help would be much appreciated.

Hello, and welcome to Sysnative :)

What OS are you running? Can I please get you to try out LatencyMon instead: Resplendence Software - Free Downloads

just to see if this is indeed a DPC issue (sort by highest execution, note down driver), then total execution, note down driver also.

Does this work? We can then look into your installation issues afterwards.

Richard
 
Hey, thanks for the response. I am running Windows 7. I started using DPC Latency Checker yesterday and had a pretty consistent double red bar so, I rebooted my PC and ran it again. At this point it was all green but, I got up this morning and I'm back at some yellow/red. (Sorry for the super vague description)
Here is a SS of LatencyMon and DPCLC: http://i.imgur.com/wmseFRd.png
I also took one of LatencyMon while in game. I figured it might be inaccurate but I'll post it anyways if it's any help: http://i.imgur.com/PfDIyXl.png
Thanks!

Edit: I think this most recent scan might be of use actually? http://i.imgur.com/yZnz2AY.png
 
hey niemiro,
thank you for the awesome guide.
when I open the etl-file and change to summary view, the drivers do not show (picture attached). what am I doing wrong?

Unbenannt.JPG
 
hey niemiro,
thank you for the awesome guide.
when I open the etl-file and change to summary view, the drivers do not show (picture attached). what am I doing wrong?

View attachment 5692

I have the same problem
Running windows 8.1
4930K
x79chipset
32g ram
jpg.gif


And thank you for a very helpful post so far. I only hope I can figure out how to attach labels to the function offsets so Ican actually see which drivers are causing the delays.
 

Attachments

  • dpc.JPG
    dpc.JPG
    209.3 KB · Views: 19
Hello,

Those of you experiencing the issues with only the memory address being displayed, could you please PM me a link to the .etl file, and I'll see why that is occurring. It may be you need to change a setting, and I'll see if I can find that setting.

Kind regards,
Stephen

EDIT - I have a quick idea.

After running the final command prompt command, when the window of graphs opens, please click

Trace --> Configure Symbol Paths

And in the text boxes, type

srv*C:\Symbols*http://msdl.microsoft.com/download/symbols;

into the first textbox, and

C:\SymCache

into the second.

Then, when you right click the graph to view the summary table, please click "Load Symbols" in the right click menu first. Then right click again and choose "View Summary Table". This time, the table may take some time to load, because it needs to download symbols from the internet. It may take anywhere from 1 minute to 10 minutes, so be patient.

See if the driver names appear as expected.
 
Last edited:
Hello,

Those of you experiencing the issues with only the memory address being displayed, could you please PM me a link to the .etl file, and I'll see why that is occurring. It may be you need to change a setting, and I'll see if I can find that setting.

Kind regards,
Stephen

EDIT - I have a quick idea.

After running the final command prompt command, when the window of graphs opens, please click

Trace --> Configure Symbol Paths

And in the text boxes, type

srv*C:\Symbols*http://msdl.microsoft.com/download/symbols;

into the first textbox, and

C:\SymCache

into the second.

Then, when you right click the graph to view the summary table, please click "Load Symbols" in the right click menu first. Then right click again and choose "View Summary Table". This time, the table may take some time to load, because it needs to download symbols from the internet. It may take anywhere from 1 minute to 10 minutes, so be patient.

See if the driver names appear as expected.

Those entries were already in the dialog box as defaults. Unfortunately, load symbols made no difference. Still just have a bunch of addresses.
Here's the etl file
https://drive.google.com/file/d/0B9cNZ-E2Q_HQMnRYb01XU0Z3NDQ/edit?usp=sharing

tnx for ur help.

BTW, DPC latency checker seems not be windows8 compatible. It's giving much higher latencies than win7. but latency monitor is telling me I am better off with win 8.1
Resplendence Software - Advanced System Tools and Developer Components
 
Back
Top