Hi Vincent, On Thu, Dec 13, 2012 at 11:11:11AM +0100, Vincent Guittot wrote: > On 13 December 2012 03:17, Alex Shi <alex....@intel.com> wrote: > > On 12/12/2012 09:31 PM, Vincent Guittot wrote: > >> +static bool is_buddy_busy(int cpu) > >> +{ > >> + struct rq *rq = cpu_rq(cpu); > >> + > >> + /* > >> + * A busy buddy is a CPU with a high load or a small load with a lot > >> of > >> + * running tasks. > >> + */ > >> + return ((rq->avg.runnable_avg_sum << rq->nr_running) > > > > > If nr_running a bit big, rq->avg.runnable_avg_sum << rq->nr_running is > > zero. you will get the wrong decision. > > yes, I'm going to do that like below instead: > return (rq->avg.runnable_avg_sum > (rq->avg.runnable_avg_period >> > rq->nr_running));
Doesn't it consider nr_running too much? It seems current is_buddy_busy returns false on a cpu that has 1 task runs 40% cputime, but returns true on a cpu that has 3 tasks runs 10% cputime each or for 2 tasks of 15% cputime each, right? I don't know what is correct, but just guessing that in a cpu's point of view it'd be busier if it has a higher runnable_avg_sum than a higher nr_running IMHO. > > > > >> + rq->avg.runnable_avg_period); > >> +} > >> + > >> +static bool is_light_task(struct task_struct *p) > >> +{ > >> + /* A light task runs less than 25% in average */ > >> + return ((p->se.avg.runnable_avg_sum << 1) < > >> + p->se.avg.runnable_avg_period); > > > > 25% may not suitable for big machine. > > Threshold is always an issue, which threshold should be suitable for > big machine ? > > I'm wondering if i should use the imbalance_pct value for computing > the threshold Anyway, I wonder how 'sum << 1' computes 25%. Shouldn't it be << 2 ? Thanks, Namhyung _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev