header

My Solution for Dell XPS M1530 DPC Latency

DPC latency is an extremely well documented problem in the Dell XPS line of laptops.  The problem is characterized by occasional CPU spikes that cause a brief stutter or crackle in the audio stream.  In my case, it only occurred every 30 seconds or so, and only for an instant.  But I use the laptop for making music, and the noise is just enough to make any sort of real-time performance impossible.

Here’s the relevant specs of the system:

  1. Intel Core 2 Duo T7500
  2. Behringer UCA222 USB Audio
  3. Broadcom 1395 WiFi
  4. NVIDIA 8400M GS 128MB Video
  5. Windows 7 Enterprise

The posts I linked to above have several solutions that have worked with varying degrees of success for different people, but nothing seemed to quite work for me. After spending most of a Saturday tinkering with this, I was able to find a solution.  Here’s what I did:

Download DPC Latency Checker. This little utility shows a scrolling bar graph that indicates the DPC (Deferred Procedure Call) performance of your computer.  The glitches in the audio stream are very clearly indicated by the big red sky scrapers.  This is what mine looked like:

Bad latency spikes on my Dell XPS M1530

The Broadcom 1395 WIFI adapter seems to be a recurring theme when it comes to DPC problems with this laptop, and unfortunately that’s the one I have installed. The first thing I did was download and install this hacked driver for the Broadcom adapter.

You need to choose ‘Browse my computer for driver software’ and then choose ‘Let me pick from a list of device drivers on my computer’ to get to the ‘Have Disk’  button that allows you to manually install the drivers.  Searching for the driver or allowing Windows to pick the best driver for your hardware won’t work.

After updating the driver, the audio glitches seemed to occur a little less frequently, but they were still there.  Time to break out the analysis tools and find out what was actually going on.

I downloaded and  installed the Windows Performance Toolkit which contains a few command line tools that allow you to analyze system performance at an individual process level. I have Windows 7, and this is part of the Windows 7 SDK. After installing the SDK, the WPT installer is located here:

C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\wpt_x64.msi

You will have to navigate to that folder and double click the msi file to install it.

After everything is installed, open an Administrator command prompt by clicking Start -> All Programs -> Accessories, right clicking on Command Prompt and choosing ‘Run as administrator’. In the console window, start xperf with this command:

xperf -on DiagEasy

The performance monitor starts running in the background, logging data about all the running processes on your system.

The next step is to start DPC Latency Checker, and watch the pretty scrolling bars until you see a latency spike.  You should let it run for at least 20 seconds or so. After you see a spike, go back over to the console window and stop the performance monitor with this command:

xperf -d trace.etl

This will stop the monitor from logging data, and write the results into the file trace.etl. At this point, you’ve got all the data you need to diagnose your DPC latency problem. 

Start the Performance Analyzer to view the results with this command:

xperf trace.etl

You’ll see your trace data in a pretty line graph:

Performance Analyzer results

Scroll down to the DPC CPU Usage line chart, right click on it, and choose Summary Table.  You’ll see a summary of the processes that were captured in your xperf trace.  Click on the Max Actual Duration [ms] column heading to sort the processes by descending maximum duration. The process at the top (with a ridiculously high number) will be your culprit. (This screenshot is just an example, no offending processes here…)

DPC usage summary

In my case, it was dxgkrnl.sys with a max actual duration of something like 32 milliseconds, which is way out of line. It turns out that this process belongs to my NVIDIA 8400M GS laptop video card.

After some more research, I learned that Powermizer is the culprit. This is an NVIDIA service that toggles the speed of the graphics adapter based on need, so when you aren’t doing anything graphics intensive the clock speed drops.  A great idea in theory, but in practice you get a massive DPC latency spike when the switch is flipped.

My solution was to turn off Powermizer.  Apparently there is a utility to do this, but it’s nowhere to be found on my system after installing the latest NVIDIA driver package.  There are also some registry keys you can modify, but once again I don’t have those keys in my registry. The easiest way to add the Powermizer registry keys and set them to the correct values is to use the Powermizer Switch utility by xsmile.

I ran the utility, rebooted, and fired up DPC Latency Checker.  No spikes!

3 Comments

    Hey very very nice tut/fix, thanx a lot.

    I too own an M1530:
    Mine has a 2.2Ghz Intel C2D proc.
    2 GB RAM
    Intel 4965AGN wireless card
    nVidia GeForce 8600M
    etc..

    I did the Windows Performance Toolkit thing just to find out its ndis.sys the process thats making my M1530 have high DPC spikes every 10 seconds or so..

    The Max actual duration shows 6+ seconds on “function” 0×890086b8 and 1.5+ seconds on function 0×89008945.

    Searching on the internet makes me think its not an nvidia or intel (wireless) process, but rather one that comes with windows wich makes me think I cant uninstall it for example.

    Btw, when I disable my wireless card some spikes (the bigger ones) go away.

    Im gonna try and see if these spikes relate in any way to Nvidia’s powermizer..

    Other than that, dunno what to do.

    Any suggestions?

    Alex

  • Oh BTW forgot to put pictures:

    Here’s WPT’s window with ndis.sys DPC spike:

    http://img263.imageshack.us/i/wpa.png/

    That was one of these spikes:

    http://img697.imageshack.us/i/dpcwirelesson.png/

    Then, you disable the wireless card and get almost no DPC spikes ( that little spike’s maybe caused by nvidia powermizer?)

    http://img695.imageshack.us/i/dpcwirelessoff.png/

  • I have a Dell XPS M1330. Much the same as yours but with a smaller screen.
    I originally had Vista and had heaps of dropouts when playing Traktor Scratch.
    It wasn’t too bad on the internal card, but as soon as I bought the NI Studio 2 DJ Card, the dropouts were about every 20-30 seconds.

    I disabled everything in the BIOS and Device Manger, but same issue.

    I wiped and installed Windows 7 and tried it right away and it was working perfectly.
    But then, I installed everything else including drivers and the problem was back worse than ever.

    It was when I uninstalled the video drivers and went back to VGA that I found the culprit and this led me to your post.
    I was going to leave it on VGA and be without graphics performance, aero etc, but now I can have both.
    You rock. Thanks heaps.

    TTT

Leave a Reply