[lkml]   [2011]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: query: [PATCH 2/2] cgroup: Remove call to synchronize_rcu in cgroup_attach_task
    On Thu, Apr 7, 2011 at 11:55 AM, Mike Galbraith <> wrote:
    > Greetings,
    > Wrt these patches:
    > [PATCH 1/2] cgroup: Set CGRP_RELEASABLE when adding to a cgroup
    > [PATCH 2/2] cgroup: Remove call to synchronize_rcu in cgroup_attach_task
    > I received a query regarding 2/2 because a large database company is
    > apparently moving tasks between cgroups frequently enough that their
    > database initialization time dropped from ~11 hours to ~4 hours when
    > they applied this patch.

    That sounds like a problem in their user-space code too, although I
    agree that making cgroup moves faster is a good thing.

    > Curious why these got no traction.

    Apart from just my chronic lack of time to work on cgroups, there were
    a couple of issues:

    1) we had trouble getting the semantics right for the release_agent
    notifications. Not that this is something that I suspect many people
    care about, but it has been part of the API since the cpuset days. I
    spent a while trying to juggle the way that release notifications were
    done (via an event counter rather than a simple flag) but never got
    them finished.

    2) I have this nagging feeling that the synchronize_rcu() call in
    cgroup_attach_task() was protecting more than is obvious. Certainly
    when cgroups first went in, that synchronize_rcu() call meant that
    cgroup_rmdir() could guarantee that if the cgroup was empty, there
    were no threads in RCU-read sections accessing their old cgroup via
    their RCU-proected current->cgroups pointers, so objects could just be
    deleted at that point. A year or two ago we RCU-ified most/all of the
    cgroup deletion path, so this shouldn't be an issue now, but I'm still
    a bit worried that we missed something. I'm probably being
    over-paranoid though.

    We're looking at testing these patches at Google, which will give a
    little more confidence.

    There's a conflicting patchset (allowing moving entire processes by
    writing to cgroup.procs) that Ben Blum has been trying to get in for
    ages, and which has just gone in to -mm - the RCU change patches will
    likely need a bit of merge love.


     \ /
      Last update: 2011-04-13 15:13    [W:0.022 / U:4.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site