国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

Linux零拷贝技术,看完这篇文章就懂了

发布时间:2019/08/01标签:   缓冲区    点击量:

原标题:Linux零拷贝技术,看完这篇文章就懂了
本文讲授 Linux 的零拷贝技巧,云盘算是一门很宏大的技巧学科,融会了许多技巧,Linux 算是比拟基本的技巧,以是,学好 Linux 关于云盘算的进修会有比拟大的关心。本文鉴戒并总结了几种比拟罕见的 Linux 下的零拷贝技巧,相干的援用链访问文后,各人假如感到本文总结得太形象,能够转到链接看具体说明。为甚么须要零拷贝传统的 Linux 体系的尺度 I/O 接口(read、write)是基于数据拷贝的,也就是数据都是 copy_to_user 或许 copy_from_user,如许做的利益是,经过旁边缓存的机制,增加磁盘 I/O 的操纵,然而害处也很显明,大批数据的拷贝,用户态和内核态的频仍切换,会耗费大批的 CPU 资本,严峻影响数据传输的机能,无数据标明,在Linux内核协定栈中,这个拷贝的耗时乃至占到了数据包全部处置流程的57.1%。甚么是零拷贝零拷贝就是这个成绩的一个处理计划,经过只管幸免拷贝操纵来减缓 CPU 的压力。Linux 下罕见的零拷贝技巧能够分为两大类:一是针对特定场景,去掉不用要的拷贝;二是去优化全部拷贝的进程。由此看来,零拷贝并没有真正做到“0”拷贝,它更多是一种思维,许多的零拷贝技巧都是基于这个思维去做的优化。零拷贝的几种方式原始数据拷贝操纵在先容之前,先看看 Linux 原始的数据拷贝操纵是怎么的。以下图,如果一个利用须要从某个磁盘文件中读取内容经过收集收回去,像如许:while((n=read(diskfd,buf,BUF_SIZE))>0)write(sockfd,buf,n);那末全部进程就须要阅历:1)read 将数据从磁盘文件经过 DMA 等方法拷贝到内核开发的缓冲区;2)数据从内核缓冲区复制到用户态缓冲区;3)write 将数据从用户态缓冲区复制到内核协定栈开发的 socket 缓冲区;4)数据从 socket 缓冲区经过 DMA 拷贝到网卡上收回去。可见,全部进程产生了最少四次数据拷贝,此中两次是 DMA 与硬件通信来实现,CPU 不间接参加,去掉这两次,依然有两次 CPU 数据拷贝操纵。方式一:用户态间接 I/O这类方式能够使利用顺序或许运转在用户态下的库函数间接拜访硬件装备,数据间接跨过内核停止传输,内核在全部数据传输进程除了会停止须要的虚构存储设置任务以外,不参加其余任何任务,这类方法可能间接绕过内核,极大进步了机能。

上一篇:值得关注的十大跨浏览器的测试工具

下一篇:没有了

返回
版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号