为什么在没有 DMA 的情况下使用套接字拼接无法提高性能?

发布于 2024-12-20 06:04:35 字数 488 浏览 2 评论 0原文

维基百科对 splice 的介绍中,我发现:

当对套接字使用 splice() 时,网络控制器 (NIC) 必须 支持DMA。

当网卡不支持 DMA 时,splice() 将不会传送任何数据 性能改进。这样做的原因是每个页面 管道将只填充帧大小(可用 4096 的 1460 字节 每页字节数)。

据我了解,拼接提高了性能,因为:

  • 上下文切换较少
  • 它最大限度地减少了副本数量(至少两个 DMA 副本)

如果 NIC 不支持 DMA 副本,我们将使用 CPU 副本。这仍然比必须进入用户空间的普通副本要好。

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

In Wikipedia's introduction to splice, I found:

When using splice() with sockets, the network controller (NIC) must
support DMA.

When the NIC does not support DMA then splice() will not deliver any
performance improvement. The reason for this is that each page of the
pipe will just fill up to frame size (1460 bytes of the available 4096
bytes per page).

From what I understand, the splice improves performance because:

  • there's less context switching
  • it minimizes the number of copies (minimum two DMA copies)

If the NIC does not support DMA copy, we use CPU copy. This is still better than normal copies which have to go to the user space.

So, I don't understand why Wikipedia says there's no performance improvements without DMA support in NIC.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遥远的她 2024-12-27 06:04:35

也许维基百科是错的?那篇文章已经被标记为引用较少......

Maybe wikipedia is wrong? That article is already flagged as being light on citations...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文