I have a server with a big hardware RAID6 array that's been configured with two volumes, presented by Linux as sda and sdb (yeah, I know, but it's a rented colo that came configured this way, and sadly I have to live with it).

I have an I/O-intensive process that uses sdb. I've run with ionice -c3, as I want it to take lower priority than anything else. Unfortunately, ionice doesn't know that the two devices are actually sharing the same array's bandwidth. When that process is busy, the kernel sees that sdb is quiet and gives it all the bandwidth it needs. However, this can make sda very slow, because (as I understand it) ionice works on a per-device basis.

Is there any way of getting the kernel to balance disk I/O across all devices?


What IO scheduler are you using?

cat /sys/block/<disk>/queue/scheduler

It will show you which one you're running. I'd try noop (which is pretty much first come, first serve), deadline and CFQ and see which is appropriate for you.

CFQ is the default for RHEL/SUSE, deadline for Ubuntu and noop for no one (but should let the backend device handle your scheduling instead of Linux trying to balance it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.