傻大方


首页 > 人文 >

coding|原来 8 张图,就可以搞懂“零拷贝”了!( 五 )



按关键词阅读:


PageCache 中的大文件数据 , 由于没有享受到缓存带来的好处 , 但却耗费 DMA 多拷贝到 PageCache 一次;
所以 , 针对大文件的传输 , 不应该使用 PageCache , 也就是说不应该使用零拷贝技术 , 因为可能由于 PageCache 被大文件占据 , 而导致「热点」小文件无法利用到 PageCache , 这样在高并发的环境下 , 会带来严重的性能问题 。
大文件传输用什么方式实现?
那针对大文件的传输 , 我们应该使用什么方式呢?
我们先来看看最初的例子 , 当调用 read 方法读取文件时 , 进程实际上会阻塞在 read 方法调用 , 因为要等待磁盘数据的返回 , 如下图:
coding|原来 8 张图,就可以搞懂“零拷贝”了!
本文图片

具体过程:
当调用 read 方法时 , 会阻塞着 , 此时内核会向磁盘发起 I/O 请求 , 磁盘收到请求后 , 便会寻址 , 当磁盘数据准备好后 , 就会向内核发起 I/O 中断 , 告知内核磁盘数据已经准备好;
内核收到 I/O 中断后 , 就将数据从磁盘控制器缓冲区拷贝到 PageCache 里;
最后 , 内核再把 PageCache 中的数据拷贝到用户缓冲区 , 于是 read 调用就正常返回了 。
对于阻塞的问题 , 可以用异步 I/O 来解决 , 它工作方式如下图:
coding|原来 8 张图,就可以搞懂“零拷贝”了!
本文图片

它把读操作分为两部分:
前半部分 , 内核向磁盘发起读请求 , 但是可以不等待数据就位就可以返回 , 于是进程此时可以处理其他任务;
后半部分 , 当内核将磁盘中的数据拷贝到进程缓冲区后 , 进程将接收到内核的通知 , 再去处理数据;
而且 , 我们可以发现 , 异步 I/O 并没有涉及到 PageCache , 所以使用异步 I/O 就意味着要绕开 PageCache 。
绕开 PageCache 的 I/O 叫直接 I/O , 使用 PageCache 的 I/O 则叫缓存 I/O 。 通常 , 对于磁盘 , 异步 I/O 只支持直接 I/O 。
前面也提到 , 大文件的传输不应该使用 PageCache , 因为可能由于 PageCache 被大文件占据 , 而导致「热点」小文件无法利用到 PageCache 。
于是 , 在高并发的场景下 , 针对大文件的传输的方式 , 应该使用「异步 I/O + 直接 I/O」来替代零拷贝技术 。
直接 I/O 应用场景常见的两种:
【coding|原来 8 张图,就可以搞懂“零拷贝”了!】应用程序已经实现了磁盘数据的缓存 , 那么可以不需要 PageCache 再次缓存 , 减少额外的性能损耗 。 在 MySQL 数据库中 , 可以通过参数设置开启直接 I/O , 默认是不开启;
传输大文件的时候 , 由于大文件难以命中 PageCache 缓存 , 而且会占满 PageCache 导致「热点」文件无法充分利用缓存 , 从而增大了性能开销 , 因此 , 这时应该使用直接 I/O 。
另外 , 由于直接 I/O 绕过了 PageCache , 就无法享受内核的这两点的优化:
内核的 I/O 调度算法会缓存尽可能多的 I/O 请求在 PageCache 中 , 最后「合并」成一个更大的 I/O 请求再发给磁盘 , 这样做是为了减少磁盘的寻址操作;
内核也会「预读」后续的 I/O 请求放在 PageCache 中 , 一样是为了减少对磁盘的操作;
于是 , 传输大文件的时候 , 使用「异步 I/O + 直接 I/O」了 , 就可以无阻塞地读取文件了 。
所以 , 传输文件的时候 , 我们要根据文件的大小来使用不同的方式:
传输大文件的时候 , 使用「异步 I/O + 直接 I/O」;
传输小文件的时候 , 则使用「零拷贝技术」;
在 Nginx 中 , 我们可以用如下配置 , 来根据文件的大小来使用不同的方式:
当文件大小大于directio值后 , 使用「异步 I/O + 直接 I/O」 , 否则使用「零拷贝技术」 。


稿源:(CSDN)

【】网址:http://www.shadafang.com/c/hn10049531C2020.html

标题:coding|原来 8 张图,就可以搞懂“零拷贝”了!( 五 )


上一篇:荣耀v40|荣耀V40已经在路上,曲面屏+双扬声器,国行2599元有戏!

下一篇:苹果|苹果开始自寻“后路”,转移生产线到印度,郭台铭发言说明了一切


人文

格萨尔|《藏地奇兵》石渠开机 穿越藏地最后秘境热血探险

阅读(15)

由沃星影业、拉近影业、拉近沃星影业出品,成都影视硅谷集团、青岛东望影业联合出品的电影《藏地奇兵》于10月12日在四川石渠正式开机。该片由著名演员秦岚担任出品人兼艺术总监,张楚晗担任总制片人,张著麟、李希杰、温子迅执导,魏千翔、屈菁菁、邢瀚卿、吴...

人文

怪我碍你|十月再见,十一月你好,释然过往,砥砺向前

阅读(12)

逝去的时光中,总有一些东西会在心中成为永恒,那么,就铭记那些美好吧,心中有阳光,充满正能量,微笑着面对生活;也会有些事情成为遗憾,有些心愿没能实现,但也不要气馁,更不要抱怨,笑看过往,努力过好当下和明天,不胡思乱想,不执着于过去。愿所有的真...

人文

年薪制| 年薪制要来了吗?事业单位职工收入或将有大变化!

阅读(22)

近日,人社部组织实施人才服务专项行动,推进高校、科研院所薪酬制度改革。落实高层次人才工资分配激励政策,鼓励事业单位对高层次人才实行年薪制、协议工资制、项目工资等灵活多样的分配形式。鼓励事业单位对高层次人才实行年薪制、协议工资制、项目工资等灵...

人文

社会【观点】医改进程迟缓的原因及破解之策

阅读(20)

1供给侧改革进展迟缓大年夜实际来看,医疗供给侧改革在社会办医、医务人员自由执业、公立病院去行政化三个方面并没有太多本质性的进展,这也是我国医改未能有大年夜冲破的重要原因。1.1社会办医成长迟缓成长社会办医,不仅是实际须要,也是一种策略。在公立病...

人文

时尚探究社成都街拍:图集分享

阅读(43)

这个夏天阴阳色也太好看了吧~又个性,又显白的发色,就算搭配学院风也一点都不突兀。一看就是经常健身的小姐姐,这个身材曲线真的羡慕了~不要太美~...

人文

#quot#六旬男子足底黑痣会长大 检查发现是恶性肿瘤

阅读(10)

本年60 岁的陈师长教师比来有些忧?。本来,三年前他的左脚底足跟邻近长了一颗黄豆大年夜小、凸起的黑" 痣"。一年前开端,这颗" 痣" 有逐渐长大年夜之势,伴有些许压痛,于是陈师长教师按期到家邻近的修脚店把这颗" 痣" 磨平,...

人文

凤眼看房长沙|长三角多市出台调控政策 房企拿地热情不减

阅读(17)

回望过去一段时间,不仅是宁波,整个长三角已是房企必争之地。今年融资环境稍有宽松后,大小房企集体携金杀往长三角,土拍市场屡现高溢价,即便多地出手调控,仍有地王出现。楼市也在市场情绪助推下迅速反弹。“近年来三四线城市房产饱和、风险积聚,标杆企业...

人文

午间时刻《欢喜猎人》要播了吗?包贝尔贾玲再次合作,携手《欢喜密探》原班人马回归

阅读(35)

网剧《欢乐密探》就是一部不错的喜剧作品,而《欢乐猎人》是《欢乐密探》原班人马打造的第二部影视作品,所以有很多人都等着可以早点看到这部剧,然则在《欢乐猎人》拍了两年今后,一向没有播出,大年夜家也都等得异常焦急。不过,有传言说《欢乐猎人》这部电...

人文

Tina|卫衣 + 半裙,照着穿好看爆了 !

阅读(21)

卫衣+半裙的搭配,属实是显胖王者,它要是称第二,那也是太谦虚了。当你挑选的裙子也很宽松时,穿上它就是灾难本身,转过身去看背后,Tina都想落泪,这五五分的身材是真实存在的吗?明明是同款卫衣,却比旁边穿裤子的look,腿长短了好多!不过小可爱们不用害...