Re: [patch 00/18] CFS Bandwidth Control v7.2

Peter Zijlstra
2011-07-25T17:08:41Z

On Mon, 2011-07-25 at 09:46 -0700, Paul E. McKenney wrote:
> On Mon, Jul 25, 2011 at 06:28:31PM +0200, Peter Zijlstra wrote:
> > On Mon, 2011-07-25 at 09:21 -0700, Paul E. McKenney wrote:
> > > On Mon, Jul 25, 2011 at 05:00:41PM +0200, Peter Zijlstra wrote:
> > > > On Mon, 2011-07-25 at 16:58 +0200, Peter Zijlstra wrote:
> > > > > + rcu_read_lock();
> > > > > + ret = walk_tg_tree_from(tg, tg_set_cfs_period_down, NULL, &period);
> > > > > + rcu_read_unlock();
> > > >
> > > > rcu over a mutex doesn't really work in mainline, bah..
> > >
> > > SRCU can handle that situation, FWIW. But yes, blocking in an RCU
> > > read-side critical section is a no-no.
> >
> > Yeah, I know, but didn't notice until after I sent.. SRCU isn't useful
> > though, way too slow due to lacking srcu_call().
>
> Good point. How frequently would a call_srcu() be invoked?
>
> In other words, would a really crude hack involving a globally locked
> per-srcu_struct callback list and a per-srcu_struct kernel thread be
> helpful, or would a slightly less-crude hack involving a per-CPU callback
> list be required?

it would be invoked every time someone kills a cgroup, which I would
consider a slow path, but some folks out there seem to think otherwise
and create/destoy these things like they're free (there was a discussion
about this some time ago about optimizing the cgroup destroy path
etc..).

Anyway, I think I can sort this particular problem by simply wrapping
the whole crap in cgroup_lock(),cgroup_unlock(). If we want to go this
way anyway.

I consider setting the cgroup paramaters an utter slow path, and if
people complain I'll simply tell them to sod off ;-)