
Hi I can only comment on some of your questions as I also can't say to understand this completely.
Then, blkio.throttle can be used to set actual hard limits on IO consumption -- like, no more than 10Mbps for this VM. I can already do this with blkio cgroups, but just not from libvirt -- yes?
Yes. But bear in mind that this only works for sync I/O, not for buffered I/O (read my discussion with Gui).
Like many people using libvirt, I only use my hosts for running VMs, and I am most interested in limiting IO operations per host to make sure that no host monopolizes our SAN. Is there a way for me to just set a hard IO throttle limit for libvirt as a whole which would apply to all child VMs created by libvirt? I saw a discussion on this list regarding group hierarchy, but it went over my head.
I did not read the other discussion, but this comes to my mind when thinking about your question: You could try to put the libvirtd process into a cgroup that has certain limits configured. Every spawned child of this process will inherit those limits. Not sure if a VM is actually a libvirtd-child though, since at least "ps" shows them as init's children on my systems. If you try this, please report back what you did and how it worked. Regards Dominik