我有一个大硬件RAID6arrays的服务器,configuration了两个卷,由Linux提供sda
和sdb
(是的,我知道,但是这是一个租来的可乐来configuration这种方式,很遗憾,我必须忍受它) 。
我有一个使用sdb
的I / O密集型进程。 我用ionice -c3
运行,因为我希望它比其他任何东西都要低。 不幸的是, ionice
不知道这两个设备实际上共享相同的arrays带宽。 当这个进程忙的时候,内核看到sdb
是安静的,并且给了它所需要的所有带宽。 然而,这可以使得sda
非常缓慢,因为(据我所知) ionice
在每个设备的基础上工作。
有没有办法让内核在所有设备上平衡磁盘I / O?
你使用什么IO调度程序?
cat /sys/block/<disk>/queue/scheduler
它会告诉你你正在运行哪一个。 我会尝试noop(这是非常先到先得),截止date和CFQ,看看哪个适合你。
CFQ是RHEL / SUSE的默认值,Ubuntu的最后期限和没有人的noop(但是应该让后端设备处理您的调度,而不是Linux来平衡它。