我有一台服务器,该服务器配备了一个大型硬件 RAID6 阵列,该阵列配置了两个卷,由 Linux 呈现为和sda
(sdb
是的,我知道,但它是租用的 colo,就是这样配置的,遗憾的是我不得不忍受它)。
我有一个使用 的 I/O 密集型进程sdb
。我使用 运行ionice -c3
,因为我希望它的优先级低于其他任何进程。不幸的是,ionice
不知道这两个设备实际上共享同一阵列的带宽。当该进程繁忙时,内核会发现它sdb
很安静,并为其提供所需的所有带宽。但是,这可能会sda
非常慢,因为(据我所知)它ionice
是基于每个设备工作的。
有没有办法让内核平衡磁盘 I/O全部设备?
答案1
您正在使用什么 IO 调度程序?
cat /sys/block/<disk>/queue/scheduler
它将显示您正在运行哪一个。我会尝试 noop(基本上是先到先得)、deadline 和 CFQ,看看哪一个适合您。
CFQ 是 RHEL/SUSE 的默认设置,Ubuntu 的 deadline 和 noop(但应该让后端设备处理您的调度,而不是让 Linux 尝试平衡它)。