如果没有DMA,为什么使用套接字拼接无法提高性能?

时间:2011-12-07 22:31:06

标签: linux linux-kernel splice dma

Wikipedia's introduction to splice中,我找到了:

  

将splice()与套接字一起使用时,网络控制器(NIC)必须   支持DMA。

     

当NIC不支持DMA时,splice()将不会提供任何内容   性能改进。这样做的原因是每一页的   管道将填充到帧大小(可用4096的1460字节   每页字节数。)

根据我的理解,接头可以提高性能,因为:

  • 上下文切换次数较少
  • 最小化副本数量(最少两个DMA副本)

如果NIC不支持DMA拷贝,我们使用CPU拷贝。这仍然比必须转到用户空间的普通副本更好。

所以,我不明白为什么维基百科说如果没有网卡中的DMA支持就没有性能提升。

1 个答案:

答案 0 :(得分:0)

也许维基百科错了?那篇文章已被标记为引用次数......