我正在一台有 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 数据?
[编辑] 添加堆栈 DPC 使用情况的图片