首页 > 其他分享 >零拷贝---零拷贝---零拷贝

零拷贝---零拷贝---零拷贝

时间:2024-09-05 15:50:30浏览次数:11  
标签:缓存 --- 内核 手段 空间 拷贝 内存

硬盘上的数据,在发往网络之前,需要经过多次缓冲区的拷贝,以及用户空间和内核空间的多次切换。如果能减少一些拷贝的过程,效率就能提升,所以零拷贝应运而生。

零拷贝是一种非常重要的性能优化手段,比如常见的 Kafka、Nginx 等,就使用了这种技术。我们来看一下有无零拷贝之间的区别。

(1)没有采取零拷贝手段

如下图所示,传统方式中要想将一个文件的内容通过 Socket 发送出去,则需要经过以下步骤:

  • 将文件内容拷贝到内核空间;
  • 将内核空间内存的内容,拷贝到用户空间内存,比如 Java 应用读取 zip 文件;
  • 用户空间将内容写入到内核空间的缓存中;
  • Socket 读取内核缓存中的内容,发送出去。

没有采取零拷贝手段的图

(2)采取了零拷贝手段

零拷贝有多种模式,我们用 sendfile 来举例。如下图所示,在内核的支持下,零拷贝少了一个步骤,那就是内核缓存向用户空间的拷贝,这样既节省了内存,也节省了 CPU 的调度时间,让效率更高。

采取了零拷贝手段的图

标签:缓存,---,内核,手段,空间,拷贝,内存
From: https://blog.csdn.net/2401_86608186/article/details/141816965

相关文章

  • web-worker 独立线程,性能优化
    ref:https://github.com/zjy4fun/web-worker分别使用主线程和worker线程处理一个耗时计算,看看对主线程上的UI渲染有什么影响 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content=&q......
  • RK3568------Openharmony 4.0-Release Docker移植、部署
    RK3568------Openharmony4.0-ReleaseDocker移植、部署文章目录RK3568------Openharmony4.0-ReleaseDocker移植、部署前言一、Docker简述1.1轻量级虚拟化1.2一致性1.3可移植性1.4高效的资源利用1.5易于部署和扩展二、移植思路三、移植实例四、遇到的问题五、......
  • 滚雪球学MyBatis-Plus(11):多数据源配置
    前言在上期内容中,我们详细介绍了如何使用MyBatisPlus的代码生成器。通过代码生成器,我们能够根据数据库表结构自动生成实体类、Mapper接口、服务类、控制器和XML映射文件,大大提高了开发效率,并减少了重复劳动。同时,我们还探讨了如何进行代码生成器的自定义配置,使其生成......
  • 滚雪球学MyBatis-Plus(12):高级功能
    前言在上期内容中,我们详细探讨了MyBatisPlus的多数据源配置。通过多数据源配置,我们可以连接多个数据库,并在运行时动态切换数据源,显著提高应用程序的灵活性和扩展性。我们详细介绍了多数据源配置的实现方法,并通过实例演示了如何在项目中应用这些技术。本期内容将深入探......
  • Go - Web Application 6
    StatefulHTTPAnicetouchtoimproveouruserexperiencewouldbetodisplayaone-timeconfirmation messagewhichtheuserseesafterthey’veaddedanewsnippet.Likeso:Aconfirmationmessagelikethisshouldonlyshowupfortheuseronce(immediat......
  • opencv - 2 - 核心操作
    一、图像的基本操作1、访问像素值并修改它们当成一个三维数组访问即可importcv2ascvimportnumpyasnpimg=cv.imread("img/1.png")oneElement=img[100,100]print(oneElement)#会得到[51352]oneElementColor=img[100,100,0]print(oneElementColor)#会得......
  • 巧手打字通-在线打字网站,终于来啦
    儿子开信息课了,要练习电脑打字了上个学期,上小学的孩子回家跟他妈妈说:“妈妈,我要学习打字,我们学校上信息课了。”孩子妈妈听了这诉求,就把笔记本电脑拿了出来,打开了一个word文档,把电脑推到孩子面前,来,好好练习吧,加油!过了十分钟,我来到孩子面前,看到了他的练习成果,屏幕上就只打出了......
  • 软件测试学习笔记丨Linux-Bash编程语法
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32091一、Bash编程基础1.1变量1.1.1语法Variable_name=value1.1.2变量定义的规则变量名区分大小写,a和A为两个不同的变量;变量名可以使用大小写字母混编的形式进行编写;变量名与值之间的=两侧都不能有空格;在读取或打印变量......
  • 工业智能网关在数据上云方面的应用-天拓四方
    随着工业4.0和物联网技术的飞速发展,工业环境中的数据管理和分析变得愈发重要。工业智能网关作为连接不同网络和设备的关键设备,不仅实现了数据的采集、处理和传输,还通过数据上云技术,进一步提升了数据的管理效率、安全性和智能化水平。本文将详细探讨工业智能网关在数据上云方面的作......
  • 【软考中级攻略站】-软件设计师(1)-数值及其转换和数据表示
    进制转换n进制->十进制步骤说明:识别基数:首先确认你正在处理的是n进制数,这里的n就是该数的基数。数位权重:从右向左数,每个位置上的数字都有一个权重,最右边的位置权重为0,依次向左递增。计算值:将每个位置上的数字乘以基数的相应幂次方,然后将所有的结果相加起来。假设有一......