论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
【操纵体系】零拷贝
【操纵体系】零拷贝
tsx81428
金牌会员
|
2025-1-10 04:27:26
|
显示全部楼层
|
阅读模式
楼主
主题
994
|
帖子
994
|
积分
2984
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
传统的文件传输: 涉及四次CPU上下文切换,四次拷贝
零拷贝技术:
1.mmap+write:用mmap替换read,淘汰一次CPU拷贝,涉及四次CPU上下文切换,三次拷贝
2.sendfile():涉及两次CPU上下文切换,三次拷贝
3.真正的零拷贝:
如果网卡支持 SG-DMA 技术(和普通的 DMA 不同),可以直接通过 SG-DMA 将内核缓冲区的数据拷贝到网卡,不再需要CPU进行拷贝。
总结:什么是零拷贝技术?
为了提高文件传输性能,于是出现了零拷贝技术,他通过一次体系调用(sendfile方法)合并了磁盘读取与网络发送两个操纵,降低了上下文切换次数。别的,拷贝数据都是发生在内核中的,天然降低了数据拷贝的次数。同时,数据拷贝的工作都是由DMA完成的,无需CPU进行数据拷贝。
使用零拷贝技术的项目:Ngnix、Kafka
需要留意的:针对于大文件,不应该使用 PageCache,即不应该使用零拷贝技术,由于可能由于PageCache 被大文件占据,而导致热点小文件无法利用到 PageCache,在高并发环境下,会带来严重性能题目。
大文件传输用什么方式实现?
在高并发场景下,针对大文件传输,使用异步I/O+直接I/O来替代零拷贝技术。
异步I/O可以解决阻塞题目,直接I/O可以不经过Page Cache 直接从磁盘读取数据到用户缓冲区,两者结合,可以实现无阻塞读取文件。如图所示:
总结:传输大文件时,使用异步I/O+直接I/O;传输小文件时,使用零拷贝技术。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
tsx81428
金牌会员
这个人很懒什么都没写!
楼主热帖
【pandas小技巧】--读取多个文件 ...
【参考】开发工程师职级与职级界定-职 ...
【毕业季】纸短情长,浅谈大二以前的学 ...
mysql修改表字段长度
kubernetes之镜像拉取策略ImagePullSec ...
读SQL进阶教程笔记06_外连接
BinaryBombs(二进制炸弹实验) ...
MySQL与Redis数据双写一致性工程落地案 ...
Apache Shiro反序列化漏洞(Shiro550) ...
计算机系统装配与集成实验
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
虚拟化与私有云
分布式数据库
Java
网络安全
Mysql
物联网
SQL-Server
快速回复
返回顶部
返回列表