您的位置 首页 产品

学会文件缓存回写的进程

学会文件缓存回写的过程-dirty_expire_interval是脏数据的超时时间,超过这个时间的脏数据将会马上放入回写队列,但是这个模式只有一条路径,启用的writeback_work是for_kupdate模式,目前看这条路径只有在周期性回写最后创建一个此类work检查超时脏数据

  1 文件缓存回写的机遇

  (1)周期性回写,周期为dirty_writeback_interval,默许5s;

  (2)块设备初次呈现脏数据;

  (3)脏页到达限额,包含dirty_bytes、dirty_background_bytes、dirty_ratio、dirty_background_raTIo;

  (4)剩下内存过少,唤醒一切回写线程;

  (5)syscall sync,唤醒一切回写线程;

  (6)syscall syncfs,同步一个超级快对应的文件体系;

  (7)syscall fsync/fdatasync,同步某个文件

  (8)laptop形式,完结blk io request之后,发动laptop_mode_wb_TImer;

  2 回写流程

  

  3 dirty_writeback_interval与dirty_expire_interval

  dirty_writeback_interval是回写线程的循环周期,当然,循环的条件是块设备存在脏数据;

  dirty_expire_interval是脏数据的超时时刻,超越这个时刻的脏数据将会立刻放入回写行列,可是这个形式只要一条途径,启用的writeback_work是for_kupdate形式,现在看这条途径只要在周期性回写最终创立一个此类work查看超时脏数据;

  周期性回写的流程如下:

  bdi_writeback_workfn

  –》 wb_do_writeback

  –》 wb_writeback

  –》 wb_check_old_data_flush

  –》 for_kupdate形式wb_writeback

  –》 wb_check_background_flush

  –》 for_background形式wb_writeback

  for_kupdate形式只回写dirty_expire_interval之前的脏数据;

  for_background形式回写当时一切脏数据;

  从此流程来看,dirty_expire_interval的效果不大,仅仅作为一种可选形式。

  4 体系掉电时最长丢掉多少脏数据

  从回写周期来看,无论是块设备首要脏数据仍是回写线程的循环周期,都是距离dirty_writeback_interval,它的默许值是5s。可是因为写脏数据的进程并不在这个距离时刻内,所以丢掉的数据或许善于5s。

  而脏数据的回写采纳FIFO的战略,所以最老的数据也不会逗留好久,所以这个最长时刻能够理解为略大于5s.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/89742.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部