登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
硬盘性能提升100倍的秘密:看懂顺序I/O的魔力 ...
硬盘性能提升100倍的秘密:看懂顺序I/O的魔力
[ 复制链接 ]
趣侮
2025-8-14 21:43:52
I/O缓存
局部性原理
局部性原理(Principle of Locality)指在程序执行过程中,倾向于访问某些局部特定的数据或指令,而不是随机地访问整个内存空间。这是缓存技术得以有效的根本原因。
1)时间局部性(Temporal Locality):如果一个数据项被访问,那么在不久的将来它很可能被再次访问(如循环中的变量、常用函数)。
2)空间局部性(Spatial Locality):如果一个数据项被访问,那么物理地址邻近它的数据项也很可能在不久的将来被访问(如顺序执行的指令、数组元素的遍历)。
局部性原理,很好平衡了存储介质的存取速率和成本的问题。以计算机存储层次为例,寄存器缓存高速缓存的数据,高速缓存 L1~L3层视具体实现彼此缓存或直接缓存内存的数据,而内存往往缓存来自本地硬盘的数据。
Page Cache
操作系统内核为了提升磁盘I/O性能,利用主存中的一部分空间作为磁盘数据的缓存,这就是Page Cache(在Linux中如此称呼,也称Buffer Cache)。它位于应用程序的read/write系统调用与底层块设备驱动之间,利用局部性原理工作。
1)当一个数据页被从硬盘读取到内存时,它被存储在Page Cache中。如果这个数据页在近期内被再次访问(时间局部性),那么可以直接从Page Cache中读取,而无需再次访问硬盘。
2)当一个数据页被读取时,操作系统通常会预读取一些附近的数据页(空间局部性),并将它们也存储在Page Cache中,以便后续的访问。
Page Cache的大小是根据当前系统的可用内存和工作负载动态调整的,此外还会通过页面置换算法如 LRU (Least Recently Used)定期淘汰旧的数据页。Page Cache可以大大减少硬盘I/O,从而提高系统的性能。
Page Cache支持写回(Write-back)和写穿(Write-through)两种策略:
1)在写回策略中,当程序写入数据时,数据首先被写入Page Cache,然后在适当的时机被写入硬盘。
2)在写穿策略中,数据同时被写入Page Cache和硬盘。
Linux下默认使用写回策略,即文件操作的写只写到Page Cache就返回。Page Cache中被修改的内存页称之为脏页(Dirty Page),脏页在特定的时候被一个叫做pdflush(Page Dirty Flush)的内核线程写入硬盘,写入的时机和条件如下:
1)当空闲内存低于一个特定的阈值时。
2)当脏页在内存中驻留时间超过一个特定的阈值时。
3)用户进程调用sync()、fsync(fd)、fdatasync(fd)系统调用时。
顺序I/O
顺序I/O(Sequential I/O)是一种数据访问模式,其中数据按照连续的顺序进行读取或写入。这与随机I/O(Random I/O)形成对比,随机I/O是指数据的访问位置在存储设备上是随机分布的。
顺序I/O的性能之所以高,主要是因为它能够最大化利用存储设备的局部性原理,并且减少了寻道时间和旋转延迟。
1)局部性原理:在顺序I/O中,数据是连续读取或写入的,Page Cache可以将文件的连续数据块缓存在内存中,以提供快速的连续读取。此外Page Cache可以将内存中缓存的连续数据,比如按页大小批次刷新到硬盘。这样可以减少频繁的硬盘写入操作。
2)减少机械硬盘的寻道时间和旋转延迟:寻道操作指磁头移动到硬盘的正确轨道的过程,旋转延迟指磁头等待硬盘旋转到正确位置的时间。在顺序I/O中,由于数据是连续存储的,因此可以大大减少寻道时间和旋转延迟,从而提高I/O性能。
3)虽然固态硬盘没有机械部件,随机读性能远好于机械硬盘,但顺序I/O仍然更优。这是因为固态硬盘内部以页(Page,如4KB/8KB/16KB)为单位读写,以块(Block,通常包含多个页,如128-512KB)为单位擦除。随机写小数据块可能导致“读-修改-擦除-写”的复杂流程,引发写放大。顺序写则能更高效地利用NAND闪存的特性,减少内部管理开销。
内存访问速度和硬盘访问速度的对比结果。
1)硬盘访问时间等于寻道时间+旋转时间+传输时间的总和。
寻道时间:8ms~12ms;
旋转时间:7200转/min:半周4ms;
传输时间:50M/s,约0.3ms 。
2)性能量级对比:硬盘随机I/O ≪ 硬盘顺序I/O(尤其对HDD) ≈ 内存随机I/O≪ 内存顺序I/O(内存的顺序访问也能受益于处理器 Cache Line的填充等)。
3)机械硬盘和固态硬盘构成:
机械硬盘:核心是高速旋转的磁盘盘片(表面覆盖磁性材料)和在盘片上移动的磁头臂。通过改变磁性材料的极性来存储0和1。
固态硬盘:核心是NAND闪存颗粒(Flash Memory)阵列,由主控芯片负责管理数据的读写、磨损均衡、垃圾回收等。通过在浮栅中存储电荷来表示0和1。
未完待续
很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
软件
科技
程序
问答
签约作者
程序园优秀签约作者
发帖
趣侮
2025-8-14 21:43:52
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多