一个关于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值