传统IO拷贝与零拷贝技术比较
1. 传统IO
由上面图知,传统io需要经过4次copy, 3次状态切换
第一次: 从硬盘 经过 DMA 拷贝 到 kernel buffer (内核buferr)
第二次: 从kernel buffer 经过cpu 拷贝到 user buffer ,比如拷贝到应用程序
第三次: 从user buffer 拷贝到 socket buffer
第四次: 从socket buffer 拷贝到 protocol engine 协议栈
第一次状态切换: 用户态---》 内核状 (或者叫着 用户上下文----》 内核上下文)
第二次状态切换: 内核状---》 用户状
第三次状态切换: 用户状---》 内核状
DMA : direct memory access 直接内存拷贝
2. mmap优化
mmap : 通过内存映射 ,将文件映射到内核缓冲区,同时用户空间可以共享内核空间的数据。这样在网络传输时就减少了内核空间到用户空间的拷贝次数
第一次拷贝: DMA拷贝,从硬件拷贝到内核空间
因为user buffer 与kernel buffer共享数据 ,所以不需要将数据从kernel buffer 拷贝到 user buffer , 数据可以直接在内核空间修改
第二次拷贝: kernel buffer 中的数据经过 cpu 拷贝到 socket buffer
第三次拷贝: socket buffer 过DMA拷贝到protocol engine
所以 mmp优化之后,拷贝共需要3次, 但是状态 切换还是3次
3. sendFile优化
Linux2.4 提供的sendFile实现了真正的零拷贝
第一次拷贝: DMA拷贝,将数据从硬盘拷贝到kernel buffer
第二次拷贝: DMA拷贝,将数据从kernel buffer拷贝到protocol engine
没有经过cpu拷贝,也就是操作系统级别的拷贝,实现了真正的零拷贝
注意: sendFile技术还是有少量的数据(例如数据的大小,偏移量等)使用了cpu拷贝,从kernel buffer 拷贝到 socket buffer ,但是数据量很少,可忽略
传统IO拷贝与零拷贝技术比较的更多相关文章
- 【Netty技术专题】「原理分析系列」Netty强大特性之ByteBuf零拷贝技术原理分析
零拷贝Zero-Copy 我们先来看下它的定义: "Zero-copy" describes computer operations in which the CPU does n ...
- Linux 中的零拷贝技术,第 1 部分
概述 本系列由两篇文章组成,介绍了当前用于 Linux 操作系统上的几种零拷贝技术,简单描述了各种零拷贝技术的实现,以及它们的特点和适用场景.本文是本系列文章的第一部分,主要是介绍一些零拷贝技术的相关 ...
- [转帖]Linux 中的零拷贝技术,第 1 部分
Linux 中的零拷贝技术,第 1 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy1/index.html 引言 传统的 ...
- 零拷贝-zero copy
Efficient data transfer through zero copy Zero Copy I: User-Mode Perspective 0. 前言 在阅读RocketMQ的官方文档时 ...
- Netty 零拷贝(一)Linux 零拷贝
Netty 零拷贝(一)Linux 零拷贝 本文探讨 Linux 中主要的几种零拷贝技术以及零拷贝技术适用的场景. 一.几个重要的概念 1.1 用户空间与内核空间 操作系统的核心是内核,独立于普通的应 ...
- Linux、JDK、Netty中的NIO与零拷贝
一.先理解内核空间与用户空间 Linux 按照特权等级,把进程的运行空间分为内核空间和用户空间,分别对应着下图中, CPU 特权等级分为4个,Linux 使用 Ring 0 和 Ring 3. 内核空 ...
- sendfile函数--零拷贝(转)
零拷贝:零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道.实现高速服务器和路由器的关键技术之一. sendfile ...
- Netty 零拷贝(三)Netty 对零拷贝的改进
Netty 零拷贝(三)Netty 对零拷贝的改进 Netty 系列目录 (https://www.cnblogs.com/binarylei/p/10117436.html) Netty 的&quo ...
- Linux下的零拷贝
Reference: https://segmentfault.com/a/1190000011989008 零拷贝是什么? 维基百科对“零拷贝”是这样描述的: "Zero-copy&qu ...
随机推荐
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_2_集合框架介绍
- 【ABAP系列】SAP ABAP 优化LOOP循环的一点点建议
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 优化LOOP循 ...
- java8 语言特性
Lamda 表达式 使用内部类也可以实现相关的功能, 但使用lamda更简短 lamda 的参数类型可以省略 如果是单条语句, lamda 的花括号可以省略 如果是单条语句, lamda 的 retu ...
- “希希敬敬对”队软件工程第九次作业-beta冲刺第二次随笔
队名: “希希敬敬对” 龙江腾(队长) 201810775001 杨希 201810812008 何敬上 201810812004 今日讨论会议照片一张: 每个人 ...
- SpringBoot(一) -- SpringBoot入门
一.简介 Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用. 1.快速创建独立运行的Spring项目以及与主流框架集成; 2 ...
- HDFS镜像文件fsimage和编辑日志文件edits
镜像文件和编辑日志文件 1)概念 namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件 edits_ ...
- SUSTOJ_路痴的单身小涵(图中最短路的条数)
去年因为太low没有做出来校赛的最后一题,遂今年校赛做了这个题,下面我做详细描述. 原题链接 本题大意:给定一个无向图G,每个边的权值为1,图中L表示起点,C表示终点,#表示未通路,给定时间k,让你判 ...
- POJ-3122.Pie(二分法最大化平均值)
二分法的主题思路就是逐步逼近,所以这道题的思路自然一目了然,做题思路也是... 本题大意:题主过生日,它买了N块半径为R[ i ],高为1的圆柱形蛋糕,现在他要将这N块蛋糕等分给F + 1个人,为了好 ...
- [BZOJ4358]Permu(回滚莫队)
[BZOJ4358]Permu(回滚莫队) 题面 给出一个长度为n的排列P(P1,P2,...Pn),以及m个询问.每次询问某个区间[l,r]中,最长的值域连续段长度. 分析 最简单的方法显然是用线段 ...
- let,const
- 让webstorm支持ES6语法:file-setting-languages&frameworks-javascript-右侧选择ES6 - let定义变量没有预解释且不能重复定义,在定 ...