系统缓存

更新时间:2023-03-16 00:52:05 阅读: 评论:0

任贤齐歌曲大全-10000管家

系统缓存
2023年3月16日发(作者:电炖锅怎么用)

【NAS】客户端NFS⽂件系统的缓存IO机制

NFS的缓存IO机制

<⼀>async参数模式下分析

NFS默认的mount参数为async,async参数表⽰内核不会透传程序的IO请求给ver,对于写IO会延迟执⾏,积累⼀定的时

间以便合并上层的IO请求以提⾼效率。

读分析

1:顺序读请求的合并预读

ddif=/mnt/nfs/3of=/dev/nullbs=1500count=100

测试发现仅仅发送了6个read请求16384+32768*4+2544=150000,并且其中后5个请求是连续发送的。

2:随机读读惩罚

随机读情况下,由于都有预读,所有每次预读都会多读⼀部分数据,导致可能实际使⽤的数据量不到接受到数据的10分

之⼀,称为读惩罚。

写分析

1:追加写

ddif=/dev/zeroof=/mnt/nfs/ddtestbs=1count=100

dd将已经存在的⽂件的size(SETATTR)设置为0,然后从头开始追加写⼊这个⽂件,每次写1B,写100次。但是内核并

没有像NFS服务器发送100次写,实际上指发送了⼀次写。

2:覆盖写

连续覆盖写:内核⾏为和追加写⼀样,内核对写操作进⾏了合并。

随机覆盖⼩:随机模式下,内核⽆法对写进⾏合并,直接完全透传⽤户程序发起的I/O。

<⼆>sync参数模式下的分析

读分析

1:如果mount的时候选⽤sync参数,或者如果上层使⽤sync调⽤,那么其产⽣的读I/O⼀定在内核处也是同步的,因为只

有在前⼀个读请求数据成功返回给客户端程序,客户端程序才会发起下⼀个读请求,(对于异步读调⽤,内核可以在短时间

内接受到多个读请求,此时内核可以将这些读请求合并,这就是异步过程)。但是同步读并不影响nfs的预读,⽐如

ddif=/mnt/nfs/ddtestbs=1count=150,并不是向rver发送150个⼀次1B的请求,⽽是根据rsize进⾏预读,把150B的数据

⼀次性读回来,其他159次就直接命中缓存了。

写分析

1:对于sync同步的写调⽤,程序只有在第⼀个写调⽤结束之后才会发起下⼀个写。

ddif=/dev/zeroof=/mnt/nfs/ddtestbs=1count=1500(1B为单位的写操作),那么就是发送150个write请求,效率⾮

常低下。

注意:DIO模式由于每次都绕过了内核的pagecache,所以每⼀个请求都会向服务端发起请求,不会进⾏预读,异步写,

写合并,读合并等策略。

本文发布于:2023-03-16 00:52:03,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678899124270056.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:系统缓存.doc

本文 PDF 下载地址:系统缓存.pdf

下一篇:返回列表
标签:系统缓存
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图