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