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

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

转载于:https://www.cnblogs.com/hrhguanli/p/4851993.html

零拷贝概念 -- linux内核相关推荐

  1. 零基础学Linux内核之设备驱动篇(8)_设备模型

    零基础学Linux内核系列文章目录 前置知识篇 1. 进程 2. 线程 进程间通信篇 1. IPC概述 2. 信号 3. 消息传递 4. 同步 5. 共享内存区 编译相关篇 1. GCC编译 2. 静 ...

  2. Linux网络处理“零拷贝”技术mmap()内核进程间通信设计8086分页管理——摆在一起来谈谈...

    Jack:最近听说了网络处理的"零拷贝"技术,觉得非常神奇,在网上查阅了很多资料.不过,并不是太明白--知其然,而不知其所以然.你能通俗地解释一下吗? 我:这是一个相对比较复杂的话 ...

  3. linux 零拷贝goodlen,linux零拷贝技术

    简介零复制(英语:Zero-copy:也译零拷贝)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域.这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽. 零拷贝操作 ...

  4. 【Netty】零拷贝(zero-copy)

    目录 1. 零拷贝技术实现 2. 传统读取IO流的操作 2.1 读操作 2.2 写操作 2.3 MMAP+write 2.4 Sendfile 3. 零拷贝应用场景 很多更新的技术在宣传的时候,都会提 ...

  5. linux零拷贝实现程序,浅析零拷贝技术

    前言零拷贝(英语:Zero-copy)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域.这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽. 零拷贝操作减少了在用户 ...

  6. Linux 零拷贝技术

    文章目录 使用标准I/O的痛点 零拷贝技术介绍 直接I/O操作 mmap内存映射 sendfile 在文件描述符之间传递数据 使用标准I/O的痛点 在Linux中 标准I/O操作都是基于数据拷贝的缓冲 ...

  7. 锁 - linux内核锁(零)

    经典博客: 术道经纬 - 知乎 目录: 一.铺垫知识 1.指令执行流 2.上下文 3.抢占 二.内核锁基础知识 1.为什么要用锁?why 2.锁保护什么?what 3.锁是如何保护资源的?How 三. ...

  8. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

  9. Java NIO零拷贝

    1.用户态和内核态基本概念 Linux操作系统的体系架构分为用户态(用户空间)和内核态(内核).内核从本质上是一种软件:控制计算机的硬件资源,并为上层应用程序提供运行环境. 用户态即上层应用程序的活动 ...

最新文章

  1. 微软私有云分享(R2)11-应答文件浅析
  2. Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式
  3. 单个正态总体均值的区间估计_考研数学闭关修炼习题讲解(3536)统计、估计与检验...
  4. button和sumbit提交表单的区别
  5. Matlab中更改fig文件中线宽
  6. leetcode 756. Pyramid Transition Matrix | 756. 金字塔转换矩阵(BFS)
  7. RESTORE DATABASE命令还原SQLServer 2005 数据库
  8. JavaScript let、const与var的区别
  9. Controller接口控制器(2)
  10. Boost库异步IO
  11. android qq钱包接入,QQ
  12. 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
  13. 串口调试工具--SecureCRT的使用
  14. 世界最快的超级计算机 神威太湖之光,揭秘全国产世界最快超级计算机“神威·太湖之光”(组图)...
  15. flash 不显示 旋转 补间动画_【图片】Flash入门5:详解制作补间动画(非传统补间)【flash软件吧】_百度贴吧...
  16. Vue进阶(幺零三):Markdown 基本语法
  17. iPhone无法联网问题
  18. jQuery API .append()
  19. else用法的一个小细节
  20. python技术面试题(十一)

热门文章

  1. poi实现Excel导入导出依赖
  2. 阿里开源分布式事务seata带你入门
  3. 更新 绑定数据_Blazor 修仙之旅 组件与数据绑定
  4. 服务器:Nginx - 最小配置说明
  5. 设计制作简单计算机,自己设计制作CPU与单片机
  6. 此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程...
  7. 一个在校的普通前端小姐姐的2021
  8. 推荐几个干货超多助你成长的前端大佬
  9. 返回一个循环整数组最大子数组和
  10. 【活动】AI人工智能技术沙龙 |杭州站