Using cgroups to limit I/O
There has been a lot of work looking at this issue inside of Google. One of the natural outcomes of trying to schedule a bunch of different 'types' of services on CPU and maximize utilization, is to look at each subsystem (memory, network, disk i/o) and work on ways of partitioning them. Of course if they can block everything (like disk i/o can) then you need to take extra precautions.co-processes using the same spindle (physical disk drive, even if they aren't on the same partition) can easily become priority inverted if the low priority process is doing a lot of disk i/o.