什么是零拷贝

news2024/11/17 7:46:54

普通拷贝流程

在实际应用中,如果我们需要把磁盘中的某个文件内容发送到远程服务器上,那么它必须要经过几个拷贝的过程,。从磁盘中读取目标文件内容拷贝到内核缓冲区,CPU 控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中, 接着在应用程序中,调用 write() 方法,把用户空间缓冲区中的数据拷贝到内核下的 Socket Buffer 中。最后,把在内核模式下的 SocketBuffer 中的数据赋值到网卡缓冲 区(NIC Buffer)网卡缓冲区再把数据传输到目标服务器上。
在这个过程中我们可以发现,数据从磁盘到最终发送出去,要经历 4 次拷贝,而在这四次拷贝过程中,有两次拷贝是浪费的,分别是:
  • 从内核空间赋值到用户空间
  • 从用户空间再次复制到内核空间 
除此之外,由于用户空间和内核空间的切换会带来 CPU 的上线文切换,对于 CPU 性能也会造成性能影响。而零拷贝,就是把这两次多于的拷贝省略掉,应用程序可以直接把磁盘中的数据从内核中直接传输给 Socket,而不需要再经过应用程序所在的用户空间

零拷贝 

零拷贝通过 DMA(Direct Memory Access)技术把文件内容复制到内核空间中的Read Buffer, 接着把包含数据位置和长度信息的文件描述符加载到 Socket Buffer 中,DMA 引擎直接可以把数据从内核空间中传递给网卡设备。 在这个流程中,数据只经历了两次拷贝就发送到了网卡中,并且减少了 2 次 cpu 的上 下文切换,对于效率有非常大的提高

 

所以,所谓零拷贝,并不是完全没有数据复制,只是相对于用户空间来说,不再需要进行数据拷贝。对于前面说的整个流程来说,零拷贝只是减少了不必要的拷贝次数而已。

在程序中如何实现零拷贝:

  • 在 Linux 中,零拷贝技术依赖于底层的 sendfile()方法实现
  • 在 Java 中,FileChannal.transferTo()方法的底层实现就是 sendfile()方法。
  • 除此之外,还有一个 mmap 的文件映射机制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全志R128外设模块配置——ADC按键配置方法

ADC 按键配置方法 FreeRTOS平台上使用的按键为ADC-KEY,采用的ADC模块为GPADC。 按键功能驱动的实现是通过ADC分压,使每个按键检测的电压值不同,从而实现区分不同的按键。按下或者弹起中断之后,通过中断触发,主动检测…

电子技术基础之一(电容和电感)

Electronic Techonolgy 1、电容和电感1.1、电容(Capacitor)1.1.1、滤波功能1.1.2、储能功能 1.2、电感(Inductor)1.2.1、楞次定律1.2.2、储能作用 1、电容和电感 先讲一个概念,电流分为直流电和交流电,其中直流电再分为稳定直流电和脉动直流电。 直流电…

如何使用VSCode将iPad Pro转化为功能强大的开发工具?

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

SpringBoot (3) Profiles,外部化配置,自定义starter

目录 1 Profiles 1.1 "组件"环境隔离 1.1.1 标识环境 1.1.2 激活环境 1.2 "配置"环境隔离 1.2.1 添加"副配置文件" 1.2.2 激活环境 2 外部化配置 2.1 配置优先级 2.2 快速部署 3 自定义starter 3.1 基本抽取 3.1.1 导yaml提示包 3…

mac录屏怎么录?看这里,告别繁琐操作!

屏幕录制是mac用户在日常生活中经常需要使用到的功能,无论是记录游戏精彩瞬间、分享在线会议、制作教学视频还是保存重要资料,屏幕录制都可以帮助我们更便捷地实现这些需求。但是很多用户并不知道mac录屏怎么录。在本文中,我们将介绍两种mac录…

TT119电源芯片用什么代替?

根据你提供的信息,Tt119电源芯片的替代选项可以是AH8652芯片。 AH8652芯片采用了SOT23-3封装,与Tt119芯片相同。同时,你提到外围元件也是一模一样的,因此不需要进行任何更改。 AH8652芯片的输入电压范围为45V至265V,…

用好快捷键事半功倍!如何在Excel中快速取消隐藏的行

工作时,我们需要经常取消隐藏Excel中的行。要知道行是否被隐藏,请仔细检查行号。如果缺少某些数字,则意味着行被隐藏。这样做很容易,而且您可以用不同的快捷方式取消隐藏Excel中的行。 在本文中,我将讨论如何在各种情况下取消隐藏Excel中的行的两种快捷方式。这些快捷方式…

【JavaEE】Java的多线程编程基础知识 -- 多线程篇(2)

Java多线程编程基础知识 一、多线程的创建二、Thread类常用的方法和API2.1 Thread 的几个常见的属性2.2 start 启动一个线程2.3 终止一个线程2.4 等待一个线程-join()2.5 线程休眠函数 -sleep() 三、线程状态3.1 观察所有线程的状态3.2 线程状态和线程转移的意义 四、线程安全&…

pytorch 训练可视化

pytorch 训练可视化 1.from torch.utils.tensorboard 1.from torch.utils.tensorboard from torch.utils.tensorboard import SummaryWriter在最新版本的pytorch中官方提供了tensorboard的api。以下是官方教程的链接 https://pytorch.org/tutorials/intermediate/tensorboard…

docker企业单位私有镜像仓库 Harbor 搭建

docker私有镜像仓库 Harbor 搭建 背景说明使用环境安装部署docker安装docker-compose安装 安装 HarborHarbor UI管理docker 登录docker推送镜像和拉取镜像docker推送镜像docker 拉取镜像 背景说明 为了方便管理docker容器镜像,通常使用各大云平台提供的镜像服务&am…

内裤洗衣机到底值不值得买?内衣洗衣机便宜好用的牌子

有很多姐妹上班累爆了,回家洗澡换下的衣物还要区分开来,将内衣裤用来自己手洗,还要专门使用杀菌洗衣液才能安心,而且随着科技的进步,现在市面上拥有了一款专门为女生设计的内衣洗衣机,可以解决日常手洗内衣…

英语 chatGPT分析句子与验证正确性 翻译

有时候我想说的时候,又不确定说的对不对。chatGPT知道。 “as well as” 和 “as good as” 都是英语中常见的短语,但它们有不同的用法和含义。 “As Well As”(以及): “As well as” 是一个连接词短语,用来连接两…

最优闭回路问题

目录 一、欧拉回路与道路 1、欧拉回路与道路 2、欧拉图存在的条件 二、中国邮路问题 1、中国邮路问题 2、中国邮路问题求解 3、有奇点的G的中国邮路问题等价问题 例1 【问题分析】 (1)先求图1中任意两点之间的距离矩阵d1如表1(Floyd算…

软件测试肖sir__python之ui自动化定位方法(2)

Selenium中元素定位方法 一、定位方法 要实现UI自动化,就必须学会定位web页面元素,Selenium核心 webdriver模块提供了9种定位元素方法: 定位方式 提供方法 id定位 find_element_by_id() name定位 find_element_by_name() class定位 find_elem…

Three.js + Tensorflow.js 构建实时人脸点云

本文重点介绍使用 Three.js 和 Tensorflow.js 实现实时人脸网格点云所需的步骤。 它假设你之前了解异步 javascript 和 Three.js 基础知识,因此不会涵盖基础知识。 该项目的源代码可以在此 Git 存储库中找到。 在阅读本文时查看该代码将会很有帮助,因为…

nginx配置download模块

nginx.conf配置 location /download{alias /usr/local/webapp/download/;sendfile on;autoindex on; # 开启目录文件列表autoindex_exact_size on; # 显示出文件的确切大小,单位是bytesautoindex_localtime on; # 显示的文件时间为文件的服务器时间charset utf…

hexo发生错误 Error: Spawn failed

错误描述 仓库中有东西,运行如下命令后报错 hexo d报错提示: 原因分析: 看别人的博客是用git进行push或hexo d的时候改变了一些.deploy_git文件下的内容,这个.deploy_git的内容对于hexo来说可能是系统文件,这里挖坑 解决办法 一个个的…

如何在不恢复出厂设置的情况下解锁 Android 手机密码?

如何在不恢复出厂设置的情况下解锁 Android 手机密码? 当您忘记 Android 手机的密码时,可能会有压力,尤其是当您不想恢复出厂设置并删除所有数据时。但是,有一些方法可以在不诉诸如此激烈的步骤的情况下解锁手机。我们将在这篇文…

平板有必要买触控笔吗?推荐的ipad手写笔

iPad之所以能吸引这么多人,主要是因为它的功能出色。用来画画、做笔记,也是一种不错的体验。但如果只是用来看电视和打游戏的话,那就真的有点大材小用了。如果你不需要昂贵的苹果电容笔,也不需要用来专业的绘图,那你可…

SSM+SpringBoot重点

SSM+SpringBoot重点 0、VO DTO DO PO介绍 VO ​ vo(view object)视图对象 ​ 用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来,一般由后端传输给前端。 DTO ​ DTO(data transfer object)数据传输对象 ​ 用于展示层和逻辑层之间的数据传输。 …