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?