Linux 上是否默认实现了“零拷贝网络”?

mez*_*hic 6 networking kernel

我看到了这篇文章:

http://lwn.net/2001/0419/kernel.php3

零拷贝网络将在 2.4.4 中出现。这个由 David Miller、Alexey Kuznetsov 和其他人编写的补丁已经开发和测试了一段时间,并在 2.4.2ac4 中被合并到“ac”内核系列中。在某种程度上,在稳定的内核系列中看到的变化令人惊讶,因为它在网络代码的深处进行了根本性的更改。然而,从所有报告来看,它是可靠的,并且在某些情况下,它应该会产生显着的性能优势。

有人能告诉我 Linux 中是否默认存在零拷贝网络,或者这个补丁是否只是为了让想做零拷贝网络的人能够实现它?

换句话说,在当前的 Ubuntu 中,它是一直执行零拷贝网络还是我必须使用某些系统调用来利用上述补丁?

poi*_*ige 2

在 Linux 的内核 git 存储库中:

git log --oneline -- drivers/net | head -n5000 | egrep -i 'zero[[:space:]]*copy'

告诉我们:

  • 7d9e6dd macvtap:如果 iov 需要的页面多于 MAX_SKB_FRAGS,则不要进行零复制
  • 05464d2 tuntap:如果 iov 需要的页面多于 MAX_SKB_FRAGS,则不要进行零复制
  • bd31fdd macvtap:使用 Zerocopy 时正确线性化 skb
  • d09ec76 tuntap:使用 Zerocopy 时正确线性化 skb
  • 19a6afb tuntap:在打开期间设置 SOCK_ZEROCOPY 标志
  • 149d36f tun:向零复制回调报告孤立碎片错误

(我相信)这清楚而积极地回答了你的问题。;)