On Wed, Oct 28, 2020 at 02:23:02PM +0800, Li, Aubrey wrote: > On 2020/10/20 9:43, Joel Fernandes (Google) wrote: > > Google has a usecase where the first level tag to tag a CGroup is not > > sufficient. So, a patch is carried for years where a second tag is added > > which > > is writeable by unprivileged users. > > > > Google uses DAC controls to make the 'tag' possible to set only by root > > while > > the second-level 'color' can be changed by anyone. The actual names that > > Google uses is different, but the concept is the same. > > > > The hierarchy looks like: > > > > Root group > > / \ > > A B (These are created by the root daemon - borglet). > > / \ \ > > C D E (These are created by AppEngine within the container). > > > > The reason why Google has two parts is that AppEngine wants to allow a > > subset of > > subcgroups within a parent tagged cgroup sharing execution. Think of these > > subcgroups belong to the same customer or project. Because these subcgroups > > are > > created by AppEngine, they are not tracked by borglet (the root daemon), > > therefore borglet won't have a chance to set a color for them. That's where > > 'color' file comes from. Color could be set by AppEngine, and once set, the > > normal tasks within the subcgroup would not be able to overwrite it. This is > > enforced by promoting the permission of the color file in cgroupfs. > > > > The 'color' is a 8-bit value allowing for upto 256 unique colors. IMHO, > > having > > more than these many CGroups sounds like a scalability issue so this > > suffices. > > We steal the lower 8-bits of the cookie to set the color. > > > > So when color = 0, tasks in group A C D can run together on the HTs in same > core, > And if I set the color of taskC in group C = 1, then taskC has a different > cookie > from taskA and taskD, so in terms of taskA, what's the difference between > taskC > and [taskB or taskE]? The color breaks the relationship that C belongs to A.
C does belong to A in the sense, A cannot share with B, this implies C can never share with B. Setting C's color does not change that fact. So coloring is irrelevant in your question. Sure, A cannot share with C either after coloring, but that's irrelevant and not the point of doing the coloring. thanks, - Joel