Messages in this thread | | | Subject | Re: [patch 00/18] CFS Bandwidth Control v7.2 | From | Peter Zijlstra <> | Date | Mon, 25 Jul 2011 19:08:14 +0200 |
| |
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 ;-)
| |