linux为了提高I/O的性能,尽量减少I/O请求的发送,主要是为了提高进程顺序读取文件的效率,提供了read ahead的机制,如果linux判断一个进程在顺序读取文件,那么它会提前读取进程所需文件的数据,放在缓存中。
判断的标准是:
1.如果进程是第一次读取文件,那么检查进程是不是读取文件的第一个page
2.读取的文件page是不是上次读取page的下一个
满足上面两个条件的进程,linux会为其创建两个window,每个window包含几个page。一个被称为current window;另一个被称为ahead window。current window是进程正在读取的文件page 数据(也可能包含部分ahead数据),ahead window是预读取的文件数据。当current window里的page数据都被进程读取后,ahead window就成为了current window,linux将会申请下一个ahead window。
当进程I/O操作不满足前面的条件时,read ahead便会暂时失效,等条件再次被满足时,read ahead机制就可以重新被激活。
活动图参见<understanding the linux kernel>-647
本文介绍了 Linux 中的 Readahead 机制,该机制通过预测进程的文件读取行为来提高 I/O 性能。当进程按顺序读取文件时,系统会预加载后续页面到缓存,以减少等待时间。
4405

被折叠的 条评论
为什么被折叠?



