我注意到,当从外部硬盘(通过 USB 3.0 连接)进行 rsync 到带有 ext4 的 RAID6(4 个硬盘)时,I/O 利用率很差。 iostat 显示从 USB HDD 读取的速度大部分为 110 MB/s(符合规格)。 iostat 还显示,在大约 50% 的时间内,没有任何内容写入 RAID。在某些时候开始写入 RAID,然后从 USB HDD 读取后不久就会停止 (0 MB/s)。这种情况会持续几秒钟,然后恢复从 USB 读取数据并停止写入 RAID。看起来写入缓存正在阻塞。我该如何调试这个问题?
系统是Ubuntu 18.04,内核4.15.0-136-generic
答案1
事实证明,系统被配置为通过大型写入缓存最小化磁盘写入。设置vm.dirty_ratio
(在发生阻塞写出之前必须填满的缓存的百分比)和vm.dirty_background_ratio
(非阻塞写出开始时的缓存的百分比)设置为 90,该值对数据进行排队,直到数据被刷新或达到 90%可用内存已满。设置vm.dirty_background_ratio
为 1 解决了这个问题。