HDFS设计特点之 利用DMA引擎的零拷贝

什么是DMA引擎

        DMA的出现就是为了解决批量数据的输入/输出问题。DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度

        DMA传输将从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。  典型例子---移动一个外部内存的区块到芯片内部更快的内存区。

DMA传输开始前:    CPU------>DMA控制器

DMA传输结束后:              DMA控制器------>CPU

        一个完整的DMA传输过程必须经历DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

什么是零拷贝

        传统拷贝:

                

       在没有任何优化技术使用的背景下,操作系统为此会进行4次拷贝以及4次上下文切换

                磁盘 --copy1--> PageCache --copy2--> 用户缓冲区 --copy3--> Socket缓冲区 --copy4-->                 网卡

       什么是上下文切换:

                它是指,先把前一个任务的CPU上下文(也就是CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。

        零  拷贝:

        零拷贝(Zero-Copy)技术是指电脑执行操作时,CPU不需要参与数据的搬运复制。这种技术通常用于网络传输文件时,节省CPU周期和内存带宽。        

                 

 

            一次系统调用代替两次系统调用
            磁盘文件 --copy1--> PageCache --copy2--> 网卡    

           零拷贝与传统拷贝的区别:

            零拷贝技术的文件传输方式相比传统文件传输的方式,减少了两次用户态和内核态的切换和数据拷贝次数。零拷贝技术可以把文件的传输性能提高至少一倍以上

        Java提供了NIO库中的transferTo方法,go语言中的syscall包中的Sendfile都提供了直接操作底层零拷贝技术的能力

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值