
Block IO
Ming_Kernel
如果曾经有过汗水里的耕耘,就会在收获的季节不致去懊悔曾经蹉跎的岁月
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Page Cache之Readahead
readahead即预读,提前从块设备(如硬盘)里多读一些page缓存到page cache tree,以便下次读时能直接从page cache中命中,而不需要触发实际块设备的访问,提高IO效率。 那么什么时候readahead,readahead多少个page呢? 调用系统调用read时,先find page cache,若cache miss则进行sync readahead;若...原创 2018-04-30 11:42:45 · 2325 阅读 · 0 评论 -
Page Cache之writeback
由于page cache的存在,用户write时只是将数据缓存到了page cache,并标记为dirty,而没有真正写到块设备(如硬盘)上 。内核在某个时刻会将page cache里的dirty数据wirteback到块设备上,这就是内核的writeback机制。 writeback是通过delayed_work来实现的,在wb_init()函数里初始化了这个delay...原创 2018-04-30 18:32:10 · 1813 阅读 · 0 评论 -
BLOCK IO之PLUG/UNPLUG
PLUG/UNPLUG即蓄流/泄流,蓄流的目的是为了提高bio在elevator queue合并和排序的机会,以提高 IO效率。 PLUG/UNPLUG对应blk_start_plug()和blk_finish_plug()两个函数,blk_start_plug()很简单,仅仅做了初始化:plug主要是在blk_queue_bio()里完成,bio先尝试merge,merge try...原创 2018-05-01 18:49:34 · 1418 阅读 · 0 评论