您当前的位置:首页 > 电脑百科 > 电脑知识

如何深入理解零拷贝技术

时间:2022-09-14 10:14:31  来源:网易号  作者:互联共商

零拷贝技术是一种思想,指的是计算机操作时,CPU不需要先将数据从某处内存复制从某处内存复制到另一个特定区域。可见,零拷贝的特点是 CPU 不全程负责内存中的数据写入其他组件,CPU 仅仅起到管理的作用。但注意,零拷贝不是不进行拷贝,而是 CPU 不再全程负责数据拷贝时的搬运工作。如果数据本身不在内存中,那么必须先通过某种方式拷贝到内存中(这个过程 CPU 可以不参与),因为数据只有在内存中,才能被转移,才能被 CPU 直接读取计算。

零拷贝技术的具体实现方式有很多,例如:

 

  • mmap(内存映射) + write
  • sendfile

 

不同的零拷贝技术应用于不同场景,下面依次进行sendfile、mmap的分析

mmap(内存映射) + write

在前面我们知道,read() 系统调用的过程中,CPU会把内核缓冲区的数据拷贝到用户的缓冲区里,于是为了减少这一步开销,我们可以用 mmap() 替换 read() 系统调用函数,mmap的系统调用作用是将内核空间地址映射为用户空间地址映射,这样CPU就不用将数据从内核态拷贝到用户态了

mmap内存映射+write

图中涉及3次数据拷贝(1次CPU拷贝、两次DMA拷贝),具体拷贝过程如下:

1、应用进程调用mmap后,DMA会把磁盘数据拷贝到内核page cache中,然后操作系统的应用进程和内核空间的共享这个缓冲区

2、应用进程再调用 write,操作系统直接将用户缓冲区的数据拷贝到 内核的socket 缓冲区中,这一切都发生在内核态,由 CPU 来搬运数据

3、最后,把内核的 socket 缓冲区里的数据,拷贝到网卡的缓冲区里,这个过程是由 DMA 搬运的。

由此可见mmap的优势:

1、可以减少一次数据拷贝的过程。

2、但这还不是最理想的零拷贝,因为把用户缓冲区的数据拷贝到内核socket 缓冲区里的工作仍然需要通过CPU完成。

3、相对于传统数据传输,mmap减少了一次CPU拷贝,上下文切换依然需要四次

sendfile

sendfile主要使用到了两个技术:

1、DMA技术

2、传递文件描述符代替数据拷贝

3、一次系统调用代替两次系统调用

下面依次讲解这三个技术的作用。

1.利用 DMA 技术

sendfile 依赖于 DMA 技术,将四次 CPU 全程负责的拷贝与四次上下文切换减少到两次,如下图所示:

sendfile利用DMA技术

DMA 负责磁盘到内核空间中的 Page cache(read buffer)的数据拷贝以及从内核空间中的 socket buffer 到网卡的数据拷贝。

2.传递文件描述符代替数据拷贝

传递文件描述可以代替数据拷贝,这是由于两个原因:

 

  • page cache 以及 socket buffer 都在内核空间中;
  • 数据传输过程前后没有任何写操作;

 

sendfile利用传递描述符

利用传递文件描述符代替内核中的数据拷贝

sendfile + SG-DMA技术传输文件,需要进行2次用户态和内核态的切换,2次数据拷贝(1次DMA拷贝,1次SG-DMA拷贝)

注意事项:只有网卡支持 SG-DMA(The Scatter-Gather Direct Memory Access)技术才可以通过传递文件描述符的方式避免内核空间内的一次 CPU 拷贝。这意味着此优化取决于 linux 系统的物理网卡是否支持,这也就意味着硬件也要受限制(Linux 在内核 2.4 版本里引入了 DMA 的 scatter/gather – 分散/收集功能,只要确保 Linux 版本高于 2.4 即可)。

3.一次系统调用代替两次系统调用

由于 sendfile 仅仅对应一次系统调用,而传统文件操作则需要使用 read 以及 write 两个系统调用。

正因为如此,sendfile 能够将用户态与内核态之间的上下文切换从 4 次讲到 2 次。

sendfile系统调用代替read/write

总结下sendfile的具体过程如下:

 

  1. 通过 DMA 将磁盘上的数据拷贝到内核缓冲区里;
  2. 缓冲区描述符和数据长度传到 socket 缓冲区,这样网卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷贝到网卡的缓冲区里,此过程不需要将数据从操作系统内核缓冲区拷贝到 socket 缓冲区中,这样就减少了一次数据拷贝;

 

此种方式对比之前的,真正意义上去除了CPU拷贝,CPU 可以去执行其他的业务计算任务,同时和 DMA 的 I/O 任务并行,极大地提升系统性能。

但他的劣势也很明显,强依赖于硬件的支持



Tags:零拷贝   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
零拷贝并非万能解决方案:重新定义数据传输的效率极限
/ PageCache 有什么作用? /在我们前面讲解零拷贝的内容时,我们了解到一个重要的概念,即内核缓冲区。那么,你可能会好奇内核缓冲区到底是什么?这个专有名词就是 PageCache,也被称为...【详细内容】
2023-09-13  Search: 零拷贝  点击:(319)  评论:(0)  加入收藏
深入探究 Linux 中的零拷贝技术
零拷贝技术的发展在不同场景下有不同的适用方法。而在Linux操作系统中,现存的零拷贝技术也非常多,它们大部分存在于不同的Linux内核版本,而有些旧的技术已经被新技术所取代。本...【详细内容】
2023-09-04  Search: 零拷贝  点击:(239)  评论:(0)  加入收藏
搞明白什么是零拷贝,就是这么简单
我们总会在各种地方看到零拷贝,那零拷贝到底是个什么东西。接下来,让我们来理一理啊。拷贝说的是计算机里的 I/O 操作,也就是数据的读写操作。计算机可是一个复杂的家伙,包括软...【详细内容】
2023-08-26  Search: 零拷贝  点击:(266)  评论:(0)  加入收藏
零拷贝技术详解
当涉及到网络编程和IO操作时,数据拷贝是一个常见的性能瓶颈。传统的数据拷贝过程中,数据需要从内核缓冲区复制到用户空间缓冲区,然后再从用户空间缓冲区复制到内核缓冲区,这个过...【详细内容】
2023-06-21  Search: 零拷贝  点击:(358)  评论:(0)  加入收藏
一文读懂计算机内核态、用户态和零拷贝技术
存储介质的性能话不多说,先看一张图,下图左边是磁盘到内存的不同介质,右边形象地描述了每种介质的读写速率。一句话总结就是越靠近cpu,读写性能越快。了解了不同硬件介质的读写...【详细内容】
2022-12-02  Search: 零拷贝  点击:(363)  评论:(0)  加入收藏
虚拟内存 & I/O & 零拷贝
作者:mosun,腾讯 PCG 后台开发工程师一、虚拟内存 1.1 虚拟内存引入我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下:CPU 运行速度很快,在完全理想的状态下,存...【详细内容】
2022-10-13  Search: 零拷贝  点击:(306)  评论:(0)  加入收藏
如何深入理解零拷贝技术
零拷贝技术是一种思想,指的是计算机操作时,CPU不需要先将数据从某处内存复制从某处内存复制到另一个特定区域。可见,零拷贝的特点是 CPU 不全程负责内存中的数据写入其他组件,CP...【详细内容】
2022-09-14  Search: 零拷贝  点击:(382)  评论:(0)  加入收藏
零拷贝技术
知识补充:1、DMA是直接内存访问(Direct Memory Access) 技术,早期 DMA 只存在在主板上,如今由于 I/O 设备越来越多,数据传输的需求也不尽相同,所以每个 I/O 设备里面都有自己的 D...【详细内容】
2022-06-28  Search: 零拷贝  点击:(328)  评论:(0)  加入收藏
网络IO是如何一步一步走向零拷贝的
你们知道当程序需要读取或者写入数据的时候,CPU是如何操作我们的磁盘的吗?首先CPU肯定是要把读写数据的命令告诉给磁盘,这个命令可以通过IO总线传给磁盘,那这里有个细节,其实我们...【详细内容】
2022-04-12  Search: 零拷贝  点击:(275)  评论:(0)  加入收藏
一文让你彻底搞清楚,Linux零拷贝技术的那些事儿
1.前言像大白这种调包侠,深知不懂底层技术点就如同空中楼阁,再这样下去面阿里p10是没希望了。想到这里,我开始慌了,所以今天和大家一起学习个底层技术点-零拷贝Zero-Copy。Linux...【详细内容】
2022-02-25  Search: 零拷贝  点击:(353)  评论:(0)  加入收藏
▌简易百科推荐
云计算和边缘计算
云计算和边缘计算是两种不同的计算模型,它们各有特点,适用于不同的场景和需求。云计算是一种基于互联网的计算模型,它将计算资源、存储资源和应用服务集中在云端,用户可以通过网...【详细内容】
2024-03-01    简易百科  Tags:云计算   点击:(28)  评论:(0)  加入收藏
云计算与边缘计算:有何不同?
公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序...【详细内容】
2024-02-28  通信产品推荐官    Tags:云计算   点击:(22)  评论:(0)  加入收藏
量子计算机是什么?跟现在的计算机相比优缺点是什么?
量子计算机是什么?跟现在的计算机相比优缺点是什么? 随着科技的不断发展,计算机技术也取得了巨大的进步。然而,随着摩尔定律的趋近于极限,传统的计算机技术面临着许多挑战。这时...【详细内容】
2024-02-23    简易百科  Tags:量子计算机   点击:(39)  评论:(0)  加入收藏
量子计算机:未来电脑的革命性技术
在科技的广袤天空中,量子计算机如一颗璀璨的新星,以其独特的光芒预示着未来电脑的革命性变革。这项令人瞩目的技术不仅代表着计算机科学的最前沿,更承载着人类对于速度和效率的...【详细内容】
2024-02-23  小浩长得帅    Tags:量子计算机   点击:(42)  评论:(0)  加入收藏
为什么计算机需要十六进制?
今天简单聊聊十六进制。实际上计算机本身是不需要十六进制的,计算机只需要二进制,需要十六进制的是人。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对...【详细内容】
2024-02-22  码农的荒岛求生  微信公众号  Tags:计算机   点击:(50)  评论:(0)  加入收藏
多模态RAG应用:跨越文本与图片的智能交互
近年来,多模态RAG(Retrieval-AugmentedGeneration)应用的兴起引发了人们对人工智能技术发展方向的广泛关注。传统的RAG应用主要基于文本的输入和输出,而随着GPT4-V的发布,多模态R...【详细内容】
2024-01-29  况成放    Tags:多模态RAG   点击:(75)  评论:(0)  加入收藏
量子计算机真相揭秘,一篇文章颠覆你的认知
你看过《三体》吗?在刘慈欣笔下,三体人用一种叫“智子”的黑科技干扰了人类的实验,从而锁死了人类的技术。而在现实世界,一把无形的“锁”其实也悄然逼近了我们,它就是芯片。随着...【详细内容】
2024-01-23  天才简史  今日头条  Tags:量子计算机   点击:(25)  评论:(0)  加入收藏
生成对抗网络(GAN)在计算机视觉领域中的应用
生成对抗网络(GAN)是一种在计算机视觉领域中广泛应用的深度学习模型。它由一个生成器网络和一个判别器网络组成,通过对抗训练的方式实现图像的生成和判别。GAN在计算机视觉中的...【详细内容】
2024-01-15  数码小风向    Tags:生成对抗网络   点击:(75)  评论:(0)  加入收藏
如何免费生成logo?
Logo设计对于一个品牌来说非常重要,它是品牌的身份标识,可以帮助人们迅速识别和记住一个品牌。同时还可以帮助建立品牌认知度,传达出品牌的专业形象。无论是大公司还是刚起步的...【详细内容】
2024-01-05  阳仔问文    Tags:logo   点击:(91)  评论:(0)  加入收藏
自然语言处理中的句法分析方法研究与实现
自然语言处理(NLP)中的句法分析方法是NLP领域的重要研究内容之一,它旨在通过对句子结构的分析和理解,揭示句子中单词之间的语法关系,为后续的语义理解和信息提取提供基础支撑。本...【详细内容】
2024-01-04  毛晓峰    Tags:自然语言处理   点击:(55)  评论:(0)  加入收藏
站内最新
站内热门
站内头条