Messages in this thread | | | Subject | Re: change in sched cpu_power causing regressions with SCHED_MC | From | Peter Zijlstra <> | Date | Fri, 19 Feb 2010 21:02:14 +0100 |
| |
On Fri, 2010-02-19 at 11:50 -0800, Suresh Siddha wrote: > On Fri, 2010-02-19 at 11:47 -0800, Peter Zijlstra wrote: > > On Fri, 2010-02-19 at 10:36 -0800, Suresh Siddha wrote: > > > exec/fork balance is not broken. i.e., during exec/fork we balance the > > > load equally among sockets/cores etc. What is broken is: > > > > > > a) In SMT case, once we end up in a situation where both the threads of > > > the core are busy , with another core completely idle, load balance is > > > not moving one of the threads to the idle core. This unbalanced > > > situation can happen because of a previous wake-up decision and/or > > > threads on other core went to sleep/died etc. Once we end up in this > > > unbalanced situation, we continue in that state with out fixing it. > > > > > > b) Similar to "a", this is MC case where we end up four cores busy in > > > one socket with other 4 cores in another socket completely idle. And > > > this is the situation which we are trying to solve in this patch. > > > > > > In your above example, we test mostly fork/exec balance but not the > > > above sleep/wakeup scenarios. > > > > Ah, indeed. Let me extend my script to cover that. > > > > The below script does indeed show a change, but the result still isn't > > perfect, when I do ./show-loop 8, it starts 8 loops nicely spread over 2 > > sockets, the difference is that all 4 remaining would stay on socket 0, > > the patched kernel gets 1 over to socket 1. > > Peter, Have you applied both my smt patch and mc patch?
Yes, find_busiest_queue() has the wl fixup in (as per tip/master).
| |