Re: Support for global block IO throttling?

From: Vivek Goyal
Date: Wed Mar 23 2011 - 10:54:24 EST


On Wed, Mar 23, 2011 at 03:39:28PM +0100, Juerg Haefliger wrote:
> Hi Vivek,
>
> >> Are there any plans to support global (per cgroup) IO throttling in
> >> the near future? I'm in need of this and would gladly work on it if
> >> nobody else is and if people think this is a useful feature. What I
> >> envision is that one can specify the limits of individual devices in a
> >> group but also specify the overall aggregate limit of the whole group.
> >> I just started looking at the throttling code and haven't quite
> >> figured it out yet so it might take me a bit to get up to speed.
> >
> > Hi Juerg,
> >
> > What's the use case? Why do you need global block IO throttling?
>
> Resource management for guest VMs. I want to make sure a VM cannot
> exceed a certain IO limit. If the VM does IOs to only one device, it
> gets the full specified bandwidth to that single device but if the VM
> talks to multiple devices, it only gets a fraction of the global
> bandwidth per device, not exceeded the global limit.

Can't we specify per device limit for VM if VM is doing IO to multiple
devices?

I know it is not exact replacement of global limits as one has to know
the topology and figure out to what all devices IO is happening. This
might get even more difficult if VM's disk is a file on filesystem on
host and not a device directly eported to guest.

Somebody also had mentioned that if we have mutiple layers of qemu
snapshots and if snapshots are sitting on different logical devices
then it becomes hard to figure out where all VM traffic is going
and how to even divide global limits in per device limits

Also current IO controller does not work for NFS. So if a global limit
is imposed in higher layers it will solve that issue too.

Also if you implement it above page cache then it should automatically
handle the case of async writes too. The downside is that if limits
are low, buffered writers will be throttled very frequently.

So in general, I think global limits is a useful concept. Do you have
a implementation ready?

Thanks
Vivek
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/