Messages in this thread | | | From | Paul Turner <> | Date | Thu, 22 Aug 2013 01:58:28 -0700 | Subject | Re: [PATCH 01/10] sched: Remove one division operation in find_busiest_queue() |
| |
On Mon, Aug 19, 2013 at 9:00 AM, Peter Zijlstra <peterz@infradead.org> wrote: > From: Joonsoo Kim <iamjoonsoo.kim@lge.com> > > Remove one division operation in find_busiest_queue() by using > crosswise multiplication: > > wl_i / power_i > wl_j / power_j := > wl_i * power_j > wl_j * power_i > > Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> > [peterz: expanded changelog] > Signed-off-by: Peter Zijlstra <peterz@infradead.org> > Link: http://lkml.kernel.org/r/1375778203-31343-2-git-send-email-iamjoonsoo.kim@lge.com > --- > kernel/sched/fair.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -5018,7 +5018,7 @@ static struct rq *find_busiest_queue(str > struct sched_group *group) > { > struct rq *busiest = NULL, *rq; > - unsigned long max_load = 0; > + unsigned long busiest_load = 0, busiest_power = SCHED_POWER_SCALE;
Initializing this to SCHED_POWER_SCALE assigns a meaning that isn't really there. How about just 1?
> int i; > > for_each_cpu(i, sched_group_cpus(group)) { > @@ -5049,10 +5049,9 @@ static struct rq *find_busiest_queue(str > * the load can be moved away from the cpu that is potentially > * running at a lower capacity. > */ > - wl = (wl * SCHED_POWER_SCALE) / power; > - > - if (wl > max_load) { > - max_load = wl;
A comment wouldn't hurt here.
> + if (wl * busiest_power > busiest_load * power) { > + busiest_load = wl; > + busiest_power = power; > busiest = rq; > } > } > >
| |