定期运行系统守护进程 fsflush 以执行以下三项主要任务:
每次调用时,fsflush 都会将一段时间内的脏文件系统页刷新到磁盘。
每次调用时,fsflush 都会检查部分内存并将已修改的页写入其后备存储。如果页已经过修改,并且不满足以下任一条件,则会写入页:
页为内核页
页为可用页
页为锁定页
页与交换设备关联
页当前参与 I/O 操作
实际结果是刷新文件中使用具有写入权限的 mmap 进行映射的页以及实际已更改的页。
页会被刷新到后备存储,但是仍与使用它们的进程保持连接。当系统在低内存的情况下运行时,如果自刷新以来页未被修改过,则这种方式可以避免因先将页写入后备存储而后再声明页所造成的延迟,从而简化页的回收过程。
fsflush 将文件系统元数据写入磁盘。每进行 n 次调用便执行一次此写入操作,其中 n 根据各种配置变量计算得出。有关详细信息,请参见tune_t_fsflushr和autoup。
可以配置以下功能:
调用的频率 (tune_t_fsflushr)
是否执行内存扫描 (dopageflush)
是否进行文件系统数据刷新 (doiflush)
文件系统数据的刷新频率 (autoup)
对于大多数系统,内存扫描和文件系统元数据同步是 fsflush 的主要活动。根据系统的使用情况,内存扫描可能很少使用,否则会占用过多的 CPU 时间。