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:
- 设置 DMA 卸载到硬件并在硬件中断其完成时继续
- CPU 上的 memcpy 1500 字节
对于较新的 CPU,答案往往是 #2。
由于 NetDMA 的整个目的是降低 CPU 使用率,但它甚至没有提供明显的 CPU 减少,这使得 NetDMA 成为一种可疑的好处。此外,它的采用率很低(没有多少供应商实施 NetDMA 提供程序),保留该功能的价值不大。它的竞争对手 memcpy 更简单、支持更好、更易于调试,有时甚至更快。
⋮