1

I'm stress testing my UDP proxy on a machine with 8 logical CPUs. At around 14 thousand UDP clients, one of the CPUs (CPU 4) starts spiking and UDP throughput (as shown by Task Manager) plummets to zero. I used WPR to record CPU usage during the spike and WPA shows CPU 4 handling twice as many DPC/ISR fragments (~11K) as all the other CPUs (~5K each). The longest DPC fragment ran for 232 milliseconds, the next 5 DPC fragments all ran for over 100 milliseconds, and the next 57 ran between 1 and 90 milliseconds.

A fragment is defined as "a period of time during which a DPC or ISR ran uninterrupted." (see https://msdn.microsoft.com/en-us/library/windows/hardware/jj679884.aspx)

Microsoft recommends that DPC fragments run for no longer than 100 microseconds! (see https://msdn.microsoft.com/en-us/library/windows/hardware/ff546551(v=vs.85).aspx)

bxvbda.sys is the module (Broadcom NetXtreme II GigE VBD) and um_bdrv_dpc is the function for all of these long running DPC fragments.

So my question is: Am I interpreting the WPA data for DPCs correctly?

All CPUs DPC/ISR

[EDIT] Adding picture of DPC Usage by Stack

enter image description here

magicandre1981
  • 97,301
  • 30
  • 179
  • 245
Marc Sherman
  • 111
  • 3
  • in the CPU sampling graph, change the view to "DPC/ISR usage by module, STack" and expand expand the stack to see more details. – magicandre1981 Apr 10 '15 at 04:11
  • @magicandre1981 Added that to post. Looks like 1,973 calls to NETIO.SYS!WfpScavangeLeastRecentlyUsedList. Any ideas? BTW, how do you make the image clickable like you did with the first? thanks! – Marc Sherman Apr 10 '15 at 13:47
  • normally you don't get PDBs for 3rd party drivers only for inbox drivers. So try a newer network driver and look what happens. – magicandre1981 Apr 10 '15 at 17:23
  • Thanks. We did but got same result. I did notice a bug in the stress test code which is causing it to hit the UDP proxy way harder than configured. – Marc Sherman Apr 10 '15 at 19:09
  • @magicandre1981 As for the lack of PDB, you're saying that um_bdrv_dpc may not be the actual function being called. Good call. I usually spot that in windbg stacks where the offset from the symbol is huge. Too bad WPA doesn't show the offset. Thanks again! – Marc Sherman Apr 10 '15 at 19:13
  • if you see the function, this means WPA was able to load symbols. If no symbol is found it shows **module.?** – magicandre1981 Apr 11 '15 at 05:59

0 Answers0