欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

一个关于linux文件预读机制问题

发布时间:2025/6/17 linux 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 一个关于linux文件预读机制问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一个关于linux文件预读机制问题

曾经,有人问我这样一个问题:

一个Native 程序 mmap 了一个文件,如果什么都不读 RSS是0,但是读一个字节,RSS就变成64k,这个在哪儿能控制大小?
mmap不同大小,这个读一个字节的申请的物理也不同,貌似跟文件大小有关系,不过这个应该可以配置吧?

其实:

我的回答如下:
读取文件,还与预读机制有关系,在读取文件时,预读机制会多读一些。物理内存以页为单位。 读取文件时,会读取到页高速缓存中。内核代表进程多读取一些,预读机制跟几个参数有关。参见《深入理解linux内核》第三版16.1. Reading and Writing a File、16.1.2. Read-Ahead of Files
struct file_ra_state
open.c (fs): file_ra_state_init(&f->f_ra, f->f_mapping->host->i_mapping);
在sys目录, find . | grep -i read_ahead_kb 可以找到read_ahead的大小配置,与具体块设备有关有关。
blk-sysfs.c
static struct queue_sysfs_entry queue_ra_entry = {
.attr = {.name = "read_ahead_kb", .mode = S_IRUGO | S_IWUSR },
.show = queue_ra_show,
.store = queue_ra_store,
};

更详细的内容请参见我的视频课程:《深入linux内核》
https://edu.51cto.com/course/17155.html

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

转载于:https://blog.51cto.com/8906847/2373742

总结

以上是生活随笔为你收集整理的一个关于linux文件预读机制问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。