[libvirt] [PATCH 0/7] Per domain bandwidth settings

Michal Privoznik mprivozn at redhat.com
Wed Jan 13 10:42:12 UTC 2016


On 13.01.2016 11:17, Alexander Burluka wrote:
> You are absolutely right, this patchset allows to set domain top-level
> cpu.cfs_period_us and cpu.cfs_quota_us cgroups. Can you please
> explain problem case a little bit more detailed? This code does not
> affect top-level cpuset cgroup, only quota and period, so there is no
> visible troubles for me. Thank you!

Well, I would have to dig into the patches, but in theory, if you have
the following cgroup layout:

A->B->C

where A is the top-level cgroup, B is child of A, C is child of B, then
B is inherently restricted by A, C is inherently restricted by B (and
transitively by A too). Therefore if for instance cpuset in A is set to
0-3, B can be only as good as A or more restrictive. So values for
cpuset in B must be a subset of those in A. And so on. The problem we
were facing just recently and that I'm mentioning was, that in the
picture, libvirt puts vCPUs into C cgroup and don't touch A or B. Now
when user wants to pin vCPUs onto different cpuset, we can simply just
change it in C cgroup. If we, however, were to set cpuset in B too, it
would be impossible for us to change C due to reasoning above.

Now, I am not familiar with CFS and we probably don't allow tuning it at
runtime either. I just want to make sure the reason I am mentioning
above is kept in picture when touching our CGroups code.

If I'm completely off, and just blabbing off the lines, disregard me. I
will probably learn more once I'm through the patches.

Michal




More information about the libvir-list mailing list