首页 > 代码库 > 零拷贝概念 -- linux内核
零拷贝概念 -- linux内核
零拷贝(zero-copy)
实现主机或路由器等设备高速网络接口的主要技术。零拷贝技术通过减少或消除关键通信路径影响速率的操作,降低数据传输的操作系统开销和协议处理开销,从而有效提高通信性能,实现高速数据传输。
零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。数据拷贝受制于传统的操作系统或通信协议,限制了通信性能。采用零拷贝技术,通过减少数据拷贝次数,简化协议处理的层次,在应用和网络间提供更快的数据通路,可以有效地降低通信延迟,增加网络吞吐率。
零拷贝技术的研究主要针对以下两个方面:
(1) 创建有效的用户级通信接口,即应用程序直接将数据从通信接口发送出去或接收进来,消除系统内核中不必要的拷贝过程;
(2) 路由器的入端到出端的直接数据传输,即接收的报文只经过一次存储器缓冲,而缓冲队列中的报文经过必要的控制信息处理后,直接传送到输出端口发送出去,实现报文快速转发。
一般来说, 认为从网卡到用户空间的系统调用会经历两次或者两次半的copy过程.
zero copy就是要消除这些copy过程.
从网卡的ring-buffer到software packets的copy可以通过直接DMA数据到software packet完成.
所谓半次copy可以有hardware checksum offload来解决.
最后的内核空间到用户空间的copy还存在问题, 最近提出的比较好的方案是IOAT2技术, 可以直接做Host memeory对Host memroy的DMA.
也看到有人使用把DMA的buffer直接map到用户空间的解决方案, 但这个对用户空间的程序不是透明的, 不具备普遍意义.
零拷贝概念 -- linux内核
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。