博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零拷贝概念 -- linux内核
阅读量:7027 次
发布时间:2019-06-28

本文共 792 字,大约阅读时间需要 2 分钟。

零拷贝(zero-copy)

备快速网络接口的主要技术。

零拷贝技术通过降低或消除关键通信路径影响速率的操作,降低传输数据的操作系统开销和协议处理开销,从而有效提高通信性能,实现快速传输数据。

零拷贝技术能够降低数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计快速接口通道、实现快速server和路由器的关键技术之中的一个。

数据拷贝受制于传统的操作系统或通信协议,限制了通信性能。採用零拷贝技术,通过降低数据拷贝次数,简化协议处理的层次,在应用和网络间提供更快的数据通路。能够有效地降低通信延迟,添加网络吞吐率。

零拷贝技术的研究主要针对下面
两个方面

(1) 创建有效的用户级通信接口,即应用程序直接将数据从通信接口发送出去或接收进来,消除系统内核中不必要的拷贝过程。

(2) 路由器的入端到出端的直接传输数据,即接收的报文仅仅经过一次存储器缓冲。而缓冲队列中的报文经过必要的控制信息处理后,直接传送到输出port发送出去,实现报文高速转发

一般来说, 觉得从网卡到用户空间的系统调用会经历两次或者两次半的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到用户空间的解决方式, 但这个对用户空间的程序不是透明的, 不具备普遍意义.

版权声明:本文博主原创文章。博客,未经同意不得转载。

你可能感兴趣的文章
人类还在进化吗?
查看>>
关于使用++a和for循环实现a-b.
查看>>
SpringMVC老版本解析Jackson
查看>>
SqlBuilder
查看>>
redhat6.4配置centos6 yum替换
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
Multiple Tabs
查看>>
JCNotificationBannerPresenter
查看>>
js闭包
查看>>
FreeCMS视频教程 还原数据库 mysql
查看>>
忘记的东西
查看>>
开源nGrinder-3分钟学会世界上最简单但潜力无限的压力工具
查看>>
java中的数据类型
查看>>
SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)
查看>>
完美洗牌算法
查看>>
python 实现elk接口获取数据
查看>>
shell脚本编程 一
查看>>
storm典型场景
查看>>
PDP Document 代码注释规范
查看>>
Apache优化——日志管理
查看>>