我的盒子上运行着两个进程=>A 和 B。
每当进程 A 将大文件写入磁盘导致磁盘 I/O 活动繁重时,我都会看到进程 B 中的文件写入间歇性地停滞。我注意到我的 Linux 内核上有以下虚拟内存设置。
vm.dirty_background_ratio = 5
vm.dirty_background_bytes = 0
vm.dirty_ratio = 20
vm.dirty_bytes = 0
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000
文档指出,“dirty_background_ratio”是在内核后台刷新线程开始将字节刷新到磁盘之前脏页占用的内存百分比。假设我有 64 GB 的内存,当脏页缓存大小达到 ~ 3.2 GB 时,此后台刷新应该会启动,我发现当进程 A 写入磁盘时确实如此。
然而,一旦这个后台刷新开始,进程 B 中的文件写入就会开始间歇性地停滞约 10-20 秒。假设此磁盘刷新是在后台进行的,为什么由于所有写入都首先进入页面缓存而不是直接进入磁盘,因此来自进程 B 的写入会停滞?