lkml.org 
[lkml]   [2020]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -tip 26/32] sched: Add a second-level tag for nested CGroup usecase
    Hi Peter,

    On Wed, Nov 25, 2020 at 02:42:37PM +0100, Peter Zijlstra wrote:
    > On Tue, Nov 17, 2020 at 06:19:56PM -0500, Joel Fernandes (Google) wrote:
    > > From: Josh Don <joshdon@google.com>
    > >
    > > 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.
    >
    > Why can't the above work by setting 'tag' (that's a terrible name, why
    > does that still live) in CDE? Have the most specific tag live. Same with
    > that thread stuff.

    There's 2 parts that Google's usecase has. The first part is set by a
    privileged process, and the second part (color) is set within the container.
    Maybe we can just put the "color" feature behind a CONFIG option for Google
    to enable?

    > All this API stuff here is a complete and utter trainwreck. Please just
    > delete the patches and start over. Hint: if you use stop_machine(),
    > you're doing it wrong.

    Ok, the idea was to use stop_machine() as in your initial patch. It works
    quite well in testing. However I agree with its horrible we ought to do
    better (or at least try).

    Maybe we can do a synchronize_rcu() after changing cookie, to ensure we are
    no longer using the old cookie value in the scheduler.

    > At best you now have the requirements sorted.

    Yes.

    thanks,

    - Joel

    \
     
     \ /
      Last update: 2020-12-01 21:12    [W:2.554 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site