Re: Support for global block IO throttling?

From: Juerg Haefliger
Date: Thu Mar 24 2011 - 03:17:38 EST


>> 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?

Yes we can but it's not exact. As I mentioned, the way I want to
specify it is so that the VMs alloted bandwidth is shared across all
the drives presented to that VM.

> 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?

Err... No... I was hoping the community can give me some pointers and
infos to get me started. Just like the details you mentioned above
which are very useful.

Thanks
...Juerg


> 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/