从一开始,我们的后台缓冲写回就很糟糕。当我们进行后台缓冲写回时,它对前台活动的影响应该很小。这就是后台活动的定义……但从我记事起,重缓冲编写器就没有这样的行为。例如,如果我做这样的事情:
$ dd if=/dev/zero of=foo bs=1M count=10k
在我的笔记本电脑上,然后尝试启动 chrome,在缓冲写回完成之前它基本上不会启动。
现在我们已经将补丁应用于 Linux,并且可以在 Fedora Workstation 和其他地方使用。耶。
但这种“写回限制”(WBT) 默认情况下没有任何影响,至少在 SATA HDD 和 SSD 上是这样。默认IO调度器CFQ不兼容与 WBT。 BFQ(CFQ 的后继者,用于多队列块层)也不是。您需要切换到不会尝试限制后台写回本身的 I/O 调度程序。所以你必须做出一些权衡:-(。
CFQ 过去可能在广告中包含听起来同样有吸引力的描述。 BFQ 当然也是如此……但从文档来看,它似乎使用了与 CFQ 类似的启发式方法。如果延迟太高,我没有看到它测量 IO 延迟和限制后台写回。
我有一台已经用了 2 年的笔记本电脑,带有旋转硬盘。它完全支持SATA NCQ,即设备上的32 深I/O 队列。基于v3 补丁的求职信,我预计像我这样的系统确实会遇到这个问题,后台写回可以一次提交太多的 IO。
我当然注意到复制大文件(20G VM 文件。我有 8GB RAM)时系统会变得无法使用。虽然,这似乎是我在那里遇到的最大问题是由于 ext4,也部分是gnome-shell 错误。
- 我可以按照什么说明来重现 WBT 解决的问题,并获得一个非常粗略的数字来显示这是否是特定系统上的问题?
- 听起来这个问题相当严重,而且现在人们已经理解了至少几年了。您可能希望某些监控系统知道如何显示潜在的问题。如果您遇到性能问题,并且您认为这是可能的原因之一,您可以查看哪些测量值来诊断它?