页缓存(PageCache)和预读机制(readahead )

页缓存(PageCache)和预读机制(readahead )

页缓存(PageCache)是操作系统(OS)对文件的缓存,用于加速对文件的读写。

page 是内存管理分配的基本单位, Page Cache 由多个 page 构成,page 在操作系统中通常为 4KB 大小,而 Page Cache 的大小则为 4KB 的整数倍。

一般来说,程序对文件进行顺序读写的速度几乎接近于内存的读写速度,主要原因就是由于OS使用PageCache机制和预读机制对读写访问操作进行了性能优化,将一部分的内存用作PageCache,大大减少磁盘 I/O 次数,加快了数据的访问。

对于数据的写入,OS会先写入至PageCache内,随后通过异步的方式由pdflush内核线程将PageCache内的数据刷盘至物理磁盘上。

对于数据的读取,由于操作系统为基于 Page Cache 的读缓存机制提供预读机制(readahead),如果一次读取文件时未命中PageCache,OS从物理磁盘上读取文件的同时,会顺序对其他相邻块的数据文件进行预读取,然后缓存到PageCache。

假设用户线程请求读取磁盘上文件 A 的 offset 为 0-3KB 范围内的数据,由于磁盘的基本读写单位为 page(4KB),于是操作系统至少会读 0-4KB 的内容,这恰好可以在一个 page 中装下,但是操作系统出于局部性原理,会选择将相邻磁盘块 offset [4KB,8KB)、[8KB,12KB) 以及 [12KB,16KB) 都加载到PageCache,于是额外在PageCache中申请了 3 个 page用于缓存

相关推荐
程曦曦4 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
赵民勇4 小时前
systemd-mount命令详解
linux
H_oRIZoN_4 小时前
Linux入门DAY42【51 单片机】DS18B20 数字温度传感器完整解析(单总线原理 + 时序 + 读取流程)
linux·单片机·linux应用编程
j7~4 小时前
【Linux网络加餐】(篇六)网络版计算器(上):模板方法模式、序列化与 JSON
linux·c++·json·序列化·反序列化·网络版计算机
流浪0015 小时前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
学烹饪的小胡桃5 小时前
资产设备管理系统 WGFIX 怎么设置https访问
linux·运维·服务器·网络·安全
邪修king6 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
高亦真6 小时前
今天是学习嵌入式的第38天
linux·学习·算法
DYWorker0016 小时前
Linux驱动子系统:中断子系统 —— Consumer和Provider(005)
linux·驱动开发
草莓熊Lotso6 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php