尝试移动页面而不是复制。这只是对内核的提示:如果内核无法从管道中移动页面,或者管道缓冲区不参考完整页面,则页面仍可能被复制。该标志的初始实现存在缺陷:因此,从Linux 2.6.21开始,它是一个无操作(但在splice()调用中仍然允许);将来可能会恢复正确的实现。
这是否意味着Linux没有零拷贝方法来写入套接字?还是在某个时候已经修复了,但多年来没有更新文档?在最新的3.x内核版本中,sendfile、splice或vmsplice是否有任何零拷贝实现?
由于谷歌没有回答这个问题,我正在创建一个stackoverflow问题,为下一个想知道是否使用vmsplice、splice或sendfile比使用普通写入有任何好处的可怜人提供帮助。