Messages in this thread |  | | Subject | Re: [PATCH 12/16] sched: refactor update_shares_cpu() -> update_blocked_avgs() | | From | Peter Zijlstra <> | | Date | Thu, 12 Jul 2012 16:40:15 +0200 |
| |
On Wed, 2012-07-11 at 17:11 -0700, Paul Turner wrote: > >> for_each_leaf_cfs_rq(rq, cfs_rq) { > >> + __update_blocked_averages_cpu(cfs_rq->tg, rq->cpu); > >> > >> + /* > >> + * Periodically release the lock so that a cfs_rq with many > >> + * children cannot hold it for an arbitrary period of time. > >> + */ > >> + if (num_updates++ % 20 == 0) { > >> + raw_spin_unlock_irqrestore(&rq->lock, flags); > >> + cpu_relax(); > >> + raw_spin_lock_irqsave(&rq->lock, flags); > > > > Gack.. that's not real pretty is it.. Esp. since we're still holding RCU > > lock and are thus (mostly) still not preemptable. > > > > How much of a problem was this?, the changelog is silent on this. > > So the holding of RCU about these operations is nothing new (and > indeed they should be much faster than before). > > As above, the bound is only for the crazy-large-numbers of cgroups > case where we don't want to sit on with interrupts disabled forever. > I suspect it wants to be larger, but picked a fairly conservative > number to start with since I also think it's not a big performance > factor either way.
How about you leave this ugly out for now (its unrelated to the rest of the changes anyway).. and we can revisit this later?
|  |