2

我在一台有 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 数据?

所有 CPU DPC/ISR

4

1 回答 1

3

我一直在分析 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 的计算方式,下面也有参考。

关键点:

“为什么 Windows 8 中的 DPC 延迟如此糟糕?我使用了一个程序 DPC 延迟检查器来测量。Windows 7 在桌面上显示大约 90u,但 Windows 8 CP 从不显示低于 1000u 的任何东西。”

“在 Windows 8 上,它报告的 DPC 延迟最低为 1000us (1ms)。它永远不会低于 1000us。它经常在 2-3ms (2,000-3,000us) 范围内达到峰值,并且经常达到 20处理期间的 -30ms 范围。”

http://answers.microsoft.com/en-us/windows/forum/windows_8-networking/why-is-dpc-latency-so-bad-in-windows-8/05ef48a6-7775-4526-9e5b-32c5951b8dbf

于 2015-06-08T12:27:44.373 回答