零拷贝(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到用户空间的解决方式, 但这个对用户空间的程序不是透明的, 不具备普遍意义.


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

最新文章

  1. Net作业调度(一) -Quartz.Net入门
  2. Thinkphp源码分析系列(五)–系统钩子实现
  3. Linux运维教程
  4. 数论 - 欧拉函数模板题 --- poj 2407 : Relatives
  5. linux 截图利器-scrot
  6. iOS 中的字体预览
  7. NandFlash详述【转】
  8. 传统ASP.NET开发和MVC的设计思想
  9. convex optimization
  10. android api 中文 (73)—— AdapterView
  11. Lucene学习总结之一:全文检索的基本原理
  12. Spring(二)——IoC
  13. HDU3496-Watch The Movie
  14. zabbix杂文
  15. 【转】shell学习笔记(六)——流程控制之for循环
  16. J2EE-tomcat的配置
  17. 背水一战 Windows 10 (95) - 选取器: 自定义文件保存选取器
  18. WPF中datagrid不显示滚动条问题
  19. java 对一个字符串进行加减乘除的运算
  20. df

热门文章

  1. IT痴汉的工作现状25-技术之养成
  2. Linux目录结构及文件基础操作
  3. CSS结构伪类E:first-child/last-child/only-child/empty
  4. JS基础函数
  5. 拉姆达表达式(Lambda Expressions)
  6. Material Design说明
  7. silverlight 生产图表(动态图表类型,Y轴数量) .xaml.cs文件
  8. Web C# 导出Excel 方法总结
  9. (原)torch中显示nn.Sequential()网络的详细情况
  10. hadoop学习之hadoop完全分布式集群安装