登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
硬盘性能提升100倍的秘密:看懂顺序I/O的魔力 ...
硬盘性能提升100倍的秘密:看懂顺序I/O的魔力
[ 复制链接 ]
趣侮
2025-8-14 21:43:52
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
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。
未完待续
很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
硬盘
性能
提升
100倍
秘密
相关帖子
宝塔服务器扩容硬盘,Linux自动磁盘挂载扩大硬盘
每周读书与学习->JMeter性能测试脚本编写实战(二)-
清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》,
SGA性能调整与优化:从内部结构到实战思路
用 Laravel 官方 AI 工具提升开发效率
同事写的count(*)性能很差,如何优化?
C++性能优化必知:CPU缓存与伪共享避免实战指南
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
Oracle等待事件:性能诊断与优化的核心指南
Oracle性能诊断与SQL优化:从9i到19c的技术演进与实践
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
教程
宝塔服务器扩容硬盘,Linux自动磁盘挂载扩大硬盘
2
48
新程序
2025-11-29
业界
每周读书与学习->JMeter性能测试脚本编写实战(二)-
4
362
坡琨
2025-12-02
安全
清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》,
1
343
师悠逸
2025-12-03
业界
SGA性能调整与优化:从内部结构到实战思路
0
885
呵烘稿
2025-12-05
业界
用 Laravel 官方 AI 工具提升开发效率
0
248
湛恶
2025-12-10
业界
同事写的count(*)性能很差,如何优化?
3
620
僻嘶
2025-12-11
安全
C++性能优化必知:CPU缓存与伪共享避免实战指南
0
495
煅圆吧
2025-12-11
安全
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
1
631
颖顿庐
2025-12-15
业界
Oracle等待事件:性能诊断与优化的核心指南
1
176
晾棋砷
2025-12-17
安全
Oracle性能诊断与SQL优化:从9i到19c的技术演进与实践
0
493
官厌
2025-12-18
回复
(5)
欧阳梓蓓
2025-11-2 19:55:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
热心回复!
晦险忿
2025-11-4 19:23:28
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
热心回复!
刃减胸
2025-11-15 12:46:06
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
呵烘稿
2025-12-10 01:12:42
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
处匈跑
6 小时前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
趣侮
6 小时前
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
601
alist如何将默认布局设置为图片布局
1009
Kali2025.4+Cherry Studio一键配置HexStrik
418
PHP 之高级面向对象编程 深入理解设计模式
416
PHP 之高级面向对象编程 深入理解设计模式
571
升级curl版本,及升级后引起的动态库链接不
294
2025年GEO优化服务商全景对比:五大核心维
779
AI Agent详解
983
Buildah 简明教程:让镜像构建更轻量,告别
610
OceanBase 在滴滴大规模运维经验以及新功能
975
[CSS+]HTML Learn Data Day 2
96
掌握相关性分析:读懂数据间的“悄悄话”
138
嵌入式UI框架-抗锯齿画圆弧算法
935
嵌入式UI框架的渐变原理、渐变算法
220
日本股票 API 对接实战指南(实时行情与 IP
563
解决Docker磁盘空间告急:认识并清理“悬空
394
别再只会算直线距离了!用“马氏距离”揪出
530
企业进行信息化后,一定会提高效率吗?真相
516
n8n整合ffmpeg
492
从random随机数看验证码重复数字
525
OceanBase 向量索引优化指南