/proc/sys/vm/nr_pdflush_threads
进行调整,通常pdflush线程数在2~8个之间。如果后端出现很多对的物理磁盘,pfliush机制是否存在很严重的锁竞争?其次如果后端磁盘出现大量的IO操作,内存每个物理磁盘对应的数据都更改非常多,对应的内存中脏page达到了一定的阈值,此时pdflush刷新数据到磁盘是否能处理过来?这些问题都值得考虑,因为pflush负责了所有的page cache中的脏页管理。/proc/sys/vm/dirtywriteback_centisecs
,默认是1/100秒。这种方式并不是每次flush所有的脏页,而是page的变脏时间超过/proc/sys/vm/dirty_expire_centisecs
的时间的脏页(这个默认是1/100秒).变脏时间是以文件的inode->dirty_when
为基准。[perrynzhou@CentOS8-Dev ~]$ uname -r
4.18.0-348.2.1.el8_5.x86_64
[perrynzhou@CentOS8-Dev ~]$ cat /proc/sys/vm/dirty_writeback_centisecs
500
[perrynzhou@CentOS8-Dev ~]$ cat /proc/sys/vm/dirty_expire_centisecs
3000
/proc/sys/vm/dirty_background_ratio
时候,write系统调用会触发回写任务将脏poage回写,直到脏page比例低于/proc/sys/vm/dirty_background_ratio
,这个过程中write系统触发后立即返回,会触发后的脏page是由kworker线程
负责;当内核中脏的page超过系统内存的/proc/sys/vm/dirty_ratio
时候,write系也会触发将脏page回写到磁盘,这时候write系统调用会阻塞
,主动回写脏页,等到kworker
完成flush脏page到磁盘,直到脏page对于/prc/sys/vm/dirty_ratio
[perrynzhou@CentOS8-Dev ~]$ uname -r
4.18.0-348.2.1.el8_5.x86_64
[perrynzhou@CentOS8-Dev ~]$ cat /proc/sys/vm/dirty_background_ratio
10
[perrynzhou@CentOS8-Dev ~]$ cat /proc/sys/vm/dirty_ratio
30