- Linux零拷贝技术,看完这篇文章就懂了
- 来源:高效运维
write(sockfd, buf , n);那么整个过程就需要经历:1)read 将数据从磁盘文件通过 DMA 等方式拷贝到内核开辟的缓冲区;2)数据从内核缓冲区复制到用户态缓冲区;3)write 将数据从用户态缓冲区复制到内核协议栈开辟的 socket 缓冲区;4)数据从 socket 缓冲区通过 DMA 拷贝到网卡上发出去。
write(sockfd, buf, len);应用程序调用 mmap ,磁盘文件中的数据通过 DMA 拷贝到内核缓冲区,接着操作系统会将这个缓冲区与应用程序共享,这样就不用往用户空间拷贝。应用程序调用write ,操作系统直接将数据从内核缓冲区拷贝到 socket 缓冲区,最后再通过 DMA 拷贝到网卡发出去。
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);sendfile 是只发生在内核态的数据传输接口,没有用户态的参与,自然避免了用户态数据拷贝。它指定在 in_fd 和 out_fd 之间传输数据,其中,它规定 in_fd 指向的文件必须是可以 mmap 的,out_fd 必须指向一个套接字,也就是规定数据只能从文件传输到套接字,反之则不行。sendfile 不存在像 mmap 时文件被截获的情况,它自带异常处理机制。
#include
ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags);但是 splice 也有局限,它使用了 Linux 的管道缓冲机制,所以,它的两个文件描述符参数中至少有一个必须是管道设备。splice 提供了一种流控制的机制,通过预先定义的水印(watermark)来阻塞写请求,有实验表明,利用这种方法将数据从一个磁盘传输到另外一个磁盘会增加 30%-70% 的吞吐量,CPU负责也会减少一半。缺陷:1)同样只适用于不需要用户态处理的程序2)传输描述符至少有一个是管道设备。方法六:写时复制在某些情况下,内核缓冲区可能被多个进程所共享,如果某个进程想要这个共享区进行 write 操作,由于 write 不提供任何的锁操作,那么就会对共享区中的数据造成破坏,写时复制就是 Linux 引入来保护数据的。写时复制,就是当多个进程共享同一块数据时,如果其中一个进程需要对这份数据进行修改,那么就需要将其拷贝到自己的进程地址空间中,这样做并不影响其他进程对这块数据的操作,每个进程要修改的时候才会进行拷贝,所以叫写时拷贝。这种方法在某种程度上能够降低系统开销,如果某个进程永远不会对所访问的数据进行更改,那么也就永远不需要拷贝。缺陷:需要 MMU 的支持,MMU 需要知道进程地址空间中哪些页面是只读的,当需要往这些页面写数据时,发出一个异常给操作系统内核,内核会分配新的存储空间来供写入的需求。方法七:缓冲区共享这种方法完全改写 I/O 操作,因为传统 I/O 接口都是基于数据拷贝的,要避免拷贝,就去掉原先的那套接口,重新改写,所以这种方法是比较全面的零拷贝技术,目前比较成熟的一个方案是最先在 Solaris 上实现的 fbuf (Fast Buffer,快速缓冲区)。Fbuf 的思想是每个进程都维护着一个缓冲区池,这个缓冲区池能被同时映射到程序地址空间和内核地址空间,内核和用户共享这个缓冲区池,这样就避免了拷贝。
来源:https://www.cnblogs.com/bakari/p/11275735.htmlAIOps 风向标!GOPS 2019 · 上海站,汇聚运维行业最佳实践。
卡巴拉的树
扫一扫下载订阅号助手,用手机发文章
赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
已同步到看一看
取消
发送
我知道了
朋友会在“发现-看一看”看到你“在看”的内容
确定
已同步到看一看写下你的想法
最多200字,当前共字
发送
已发送
朋友将在看一看看到
确定
写下你的想法...
取消
发布到看一看
确定
最多200字,当前共字
发送中
微信扫一扫
使用小程序
取消
允许
即将打开一个新页面
取消
允许
-
-
- 给孩子报国学班之前,不妨花5分钟了解下国学是什么 | 短史记
- “国学”是个很有意思的概念。 它既是一个古已有之的国产词,也是一个近代才引入的舶来词。 说它古已有之,是因为这个词,至晚可以追溯到《周礼》中的“掌国学之政”,此后又屡见于各种典籍史册。 比如《文
- 大家
-
-
-
- 有远见的父母,都有点心狠
- 有远见的父母,都有点心狠 - 来自十点读书 - / 12:14 文 | 小飞老师 · 主播 | 小米 来源:飞慕课(ID: feimooc) 最近,我姐做了一件很“狠”的事。 有一天,她要改掉小外
- 十点读书
-
-
-
- 诸子云 | 走进腾讯:产业互联网时代下的安全
- 诸子云 ▪ 企业网络安全专家联盟——以中国境内各行业各领域企业组织的网络安全从业骨干为主体的社群组织,是为奋战在用户单位网络安全一线的实践者提供的交流互助平台。 互联网的下半场是产业互联网,这点早已
- 安在
-
-
-
- 跟陌生人破冰的速度,就是成长的速度
- 今天分享的书籍是《破冰:我们为什么需要和陌生人说话》,作者是:小荻老师,本来当成一本沟通书籍来读,读完几遍之后,这本书实际上更象是从心理学的角度来讲 为什么要跟陌生人说话。 2019年第76本书
- warfalcon
-
-
-
- 读书 | 为什么天气这么热,欧洲人还不安空调?
- ↑点击上方三联生活周刊加星标! 这几天有些地方的体感温度达到50度,做个饭就像蒸桑拿,真的要小心保命。英国遗传学家史蒂夫·琼斯在《太阳来了》一书中说,日晒对人体有好处。在阳光强烈的地方,许多癌
- 三联生活周刊
-
-
-
- 【赠书福利】马克·安德森:为什么科技突飞猛进,医疗和教育开支却越来越高?
- (识局微信公共账号zhijuzk) ▼ 在硅谷的投资人中,马克·安德森是最狂热的科技热爱者。对科技趋势和科技创新机会,他有自己独特的理解。机器人、自动驾驶、比特币、人工智能、虚拟现实、飞行汽车,
-
-
-
- Linux零拷贝技术,看完这篇文章就懂了
- 本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较大的帮助。 本文借鉴并总结了几种比较常
- 高效运维
-
-
-
- 你能拥有的自由,以你的自律为限
- 彭萦 改变自己主创 创业者 | 品牌人 | 性格分析师 自律并不是一个什么远在天边的大词儿,它是你每一天、每一分钟,在每个明明不想做的时刻 咬下牙逼着自己去做的选择 。不被欲望掌控,才
- 改变自己
-
-
-
- 靠打工是发不了财的,想发财必须有商业头脑
- 今天,有机会和一个十年未见的好友老戴(化名,60后)见面,他还带了一个朋友来,他们以前就是同事关系,现在也合伙在做一些生意。 这位新朋友老张(化名),跟我年纪差不多大,但是已经是一个巨富,他也是做了
- Tiny4Voice
-
-
-
- 原创丨特朗普又想耍诈被中国识破,贸易谈判释放4大信号!
- 天台中黄1号,已售6000盒,深受战友肯定喜爱。针对战友疑问略作分解:特选实惠,品一口就知什么是好茶,与其他茶品非常容易区分,即拥有很强的大自然的气息;臻选性价比高,相比特选其口味更近九凝飞黄;九凝飞
- 占豪
-
-
-
- 原创丨普京绝妙提议,各国好好考虑!
- 3天售罄5000盒,紫凝黄好不好,看专业战友评价: 4位爱茶战友感受: 3款茶品级不同,特选实惠,甄选性价比非常高,九凝飞黄品质令人赞叹!老茶客常说好茶汤中笔挺站立,终于见识!为回馈热情战友,继续2件
- 占豪
-
-
-
- 嫁给一个人之前,要看清这几件事
- 嫁给一个人之前,要看清这几件事 好男人是可以有非常不同的个性和形象的。如果一定要我提出一个标准,那么,我只能说,他们的共同特点是对人生、包括对爱情有一种根本的严肃性。 嫁给一个人之前要看清这几
- 周国平
-
-
-
- 中国芯崛起,联发科技发布G90芯片,Redmi全球首发
- 作者|王长胜 出品|科技观察 2019年7月30日,全球第二大手机芯片厂商联发科技,推出首款为游戏而生的手机芯片Helio G90系列和芯片级游戏优化引擎技术MediaTek HyperEngin
- 科技观察
-