我在具有8个逻辑CPU的计算机上对我的UDP代理进行压力测试。在大约14,000个UDP客户端中,其中一个CPU(CPU 4)启动尖峰,UDP吞吐量(如任务管理器所示)急剧下降到零。我使用WPR记录尖峰期间的CPU使用情况,WPA显示CPU 4处理的DPC / ISR碎片数量(~11K)是所有其他CPU(每个约5K)的两倍。最长的DPC片段运行232毫秒,接下来的5个DPC片段全部运行超过100毫秒,接下来的57个片段运行1到90毫秒。
片段定义为" DPC或ISR不间断运行的一段时间。" (见https://msdn.microsoft.com/en-us/library/windows/hardware/jj679884.aspx)
Microsoft建议DPC片段的运行时间不超过100微秒! (见https://msdn.microsoft.com/en-us/library/windows/hardware/ff546551(v=vs.85).aspx)
bxvbda.sys是模块(Broadcom NetXtreme II GigE VBD),um_bdrv_dpc是所有这些长时间运行的DPC片段的函数。
所以我的问题是:我是否正确解释了DPC的WPA数据?
答案 0 :(得分:2)
我一直在分析etl痕迹,是的,你似乎正确地看着这个。您没有提到您正在使用的服务器版本,但某些版本的Windows Server上的UDP流量需要一个修补程序。这可能值得研究。
以下文章是关于分析DPC问题的非常棒的帖子,也可能想看看它。基本上你走过痕迹,寻找超过100毫秒。现在在Windows 8中,这改变了很多,所以操作系统(再次):)
http://blogs.technet.com/b/craigf/archive/2014/02/03/a-backup-server-flooded-by-dpcs.aspx
在Windows 8中,您可以看到我们更改了DPC的计算方式,也可参考下文。
关键点:
“为什么DPC Latency在Windows 8中如此糟糕?我使用程序DPC Latency Checker来测量.Windows 7在桌面上显示大约90u,但Windows 8 CP从未显示低于1000u的任何内容。”
“在Windows 8上,它报告的DPC潜伏期最低为1000us(1ms)。它永远不会达到1000us以下。它经常在2-3ms(2,000-3,000us)范围内达到峰值,并且经常出现峰值处理期间进入20-30ms范围。“