学会文件缓存回写的过程

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.

后疫情时代 厨卫家电市场迎来“开门红”
2018年银行新增贷款资金仍然集中在房地产行业,制造业贷款金额不断萎缩
自制太阳能发电站详细过程
USB接口不可或缺,FTDI携新品VNC2亮相
逆变电源控制电机频率能调吗,逆变电源控制办法
学会文件缓存回写的过程
AT&T正式公布了2020年边缘计算发展的三大策略
华为鸿蒙系统公测申请入口
校园安防是一直都是智能安防建设中不可忽视的一部分
如何使用Arduino中断
一文汇总最精华汽车电机内部技术原理
数字电源中如何把连续频域变换为离散域(一)
GSM 协会公布2011年移动世界大会的新增主题演讲嘉宾
基于USB总线的多路电话录音系统
增强现实与虚拟现实技术之间的联系是什么?
TI无线连接技术选择指南介绍
随着人们对网络信息系统依赖性增强 网络攻击事件的数量不断增多
笔记本维修资料
苹果 M1 Mac重新支持侧载 iPhone 和 iPad 应用
5G基站给电源设计者带来什么新挑战