NetDMA(和直接缓存访问?)已从 Windows 8/Server 2012 中删除。为什么?

NetDMA(和直接缓存访问?)已从 Windows 8/Server 2012 中删除。为什么?

MSDN 页面上直接缓存访问 (DCA)是 NetDMA 的一部分,它表示

Windows 8 及更高版本不支持 NetDMA 接口。

所以我猜 NetDMA 和 DCA 都消失了。由于这两个想法在性能方面似乎都很好,而且相对较新,所以我的问题是:

有谁知道为什么 MS 删除了它,或者为什么删除该功能是有意义的?

答案1

根据这个论坛帖子NetDMA 已从 Windows 8 和 Server 2012 / 2012 R2 中删除由于没有真正降低 CPU 使用率:

杰弗里·蒂佩特(Jeffrey Tippet)[微软]
[电子邮件保护]


> 为什么 Win 8 及以后版本不再支持该功能?

我在 Windows 8 中删除了 NetDMA。希望我能得到一些线索 :)

NetDMA 的目的是通过将 memcpy 卸载到通用卸载引擎来减少 CPU 的使用率。

但在网络中,我们倾向于处理相当小的缓冲区。典型的网络缓冲区往往不大于 1500 字节。(是的,我们可以执行许多千字节的 LSO,但 NetDMA 限制为每笔交易仅 2 页内存,因此 NetDMA 最多应与 8kb 缓冲区进行比较。)

哪个使用更少的CPU:

  1. 设置 DMA 卸载到硬件并在硬件中断其完成时继续
  2. CPU 上的 memcpy 1500 字节

对于较新的 CPU,答案往往是 #2。

由于 NetDMA 的整个目的是降低 CPU 使用率,但它甚至没有提供明显的 CPU 减少,这使得 NetDMA 成为一种可疑的好处。此外,它的采用率很低(没有多少供应商实施 NetDMA 提供程序),保留该功能的价值不大。它的竞争对手 memcpy 更简单、支持更好、更易于调试,有时甚至更快。

                ⋮

相关内容