On Wed, Apr 07, 2021 at 08:34:24PM +0200, Peter Zijlstra wrote: > IMO as long as cgroups have that tasks file, you get to support people > using it. That means that tasks joining your cgroup need to 'inherit' > cgroup properties. The tasks file is consequence of binding this to cgroups, I'm one step back. Why to make "core isolation" a cgroup property? (I understand this could help "visualize" what the common domains are if cgroups were the only API but with prctl the structure can be arbitrarily modified anyway.) > Given something like: > > R > / \ > A B > / \ > C D Thanks for the example. > B group can set core_sched=1 and then all its (and its decendants) tasks > get to have the same (group) cookie and cannot share with others. The same could be achieved with the first task of group B allocating its new cookie which would be inherited in its descednants. > If however B is a delegate and has a subgroup D that is security > sensitive and must not share core resources with the rest of B, then it > can also set D.core_sched=1, such that D (and its decendants) will have > another (group) cookie. If there is such a sensitive descendant task, it could allocate a new cookie (same way as the first one in B did). > On top of this, say C has a Real-Time tasks, that wants to limit SMT > interference, then it can set a (task/prctl) cookie on itself, such that > it will not share the core with the rest of the tasks of B. (IIUC, in this particular example it'd be redundant if B had no inner tasks since D isolated itself already.) Yes, so this is again the same pattern as the tasks above have done. > In that scenario the D subtree is a restriction (doesn't share) with the > B subtree. This implies D's isolation from everything else too, not just B's members, no? > And all of B is a restriction on all its tasks, including the Real-Time > task that set a task cookie, in that none of them can share with tasks > outside of B (including system tasks which are in R), irrespective of > what they do with their task cookie. IIUC, the equivalent restriction could be achieved with the PTRACE-like check in the prctl API too (with respectively divided uids). I'm curious whether the cgroup API actually simplifies things that are possible with the clone/prctl API or allows anything that wouldn't be otherwise possible. Regards, Michal