一个关于linux文件预读机制问题
一個關(guān)于linux文件預(yù)讀機制問題
曾經(jīng),有人問我這樣一個問題:
一個Native 程序 mmap 了一個文件,如果什么都不讀 RSS是0,但是讀一個字節(jié),RSS就變成64k,這個在哪兒能控制大小?
mmap不同大小,這個讀一個字節(jié)的申請的物理也不同,貌似跟文件大小有關(guān)系,不過這個應(yīng)該可以配置吧?
其實:
我的回答如下:
讀取文件,還與預(yù)讀機制有關(guān)系,在讀取文件時,預(yù)讀機制會多讀一些。物理內(nèi)存以頁為單位。 讀取文件時,會讀取到頁高速緩存中。內(nèi)核代表進程多讀取一些,預(yù)讀機制跟幾個參數(shù)有關(guān)。參見《深入理解linux內(nèi)核》第三版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的大小配置,與具體塊設(shè)備有關(guān)有關(guān)。
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,
};
更詳細(xì)的內(nèi)容請參見我的視頻課程:《深入linux內(nèi)核》
https://edu.51cto.com/course/17155.html
另外我的相關(guān)培訓(xùn)視頻請看:
歡迎觀看我發(fā)布的各個課程: https://edu.51cto.com/lecturer/8896847.html
轉(zhuǎn)載于:https://blog.51cto.com/8906847/2373742
總結(jié)
以上是生活随笔為你收集整理的一个关于linux文件预读机制问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京全年天气状况分析
- 下一篇: linux使用同一密钥对实现互相免密登录