lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 15 May 2008 22:41:43 +0530 From: Gautham R Shenoy <ego@...ibm.com> To: Srivatsa Vaddagiri <vatsa@...ux.vnet.ibm.com> Cc: Ingo Molnar <mingo@...e.hu>, npiggin@...e.de, linux-kernel@...r.kernel.org, Srivatsa Vaddagiri <vatsa@...ibm.com> Subject: Re: [PATCH] sched: Improve readability in update_cpu_load() code On Thu, May 15, 2008 at 08:22:15PM +0530, Srivatsa Vaddagiri wrote: > On Thu, May 15, 2008 at 06:34:59PM +0530, Gautham R Shenoy wrote: > > Author: Gautham R Shenoy <ego@...ibm.com> > > Date: Thu May 15 17:55:49 2008 +0530 > > > > sched: Improve readability in update_cpu_load() code > > > > Currently the cpu_load[i] is calculated as: > > this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i; > > > > However, since scale = 2^i, this can be simplified as: > > this_rq->cpu_load[i] = old_load + ((new_load - old_load) >> i); > > > > Makes it easier to read. > > Signed-off-by: Gautham R Shenoy <ego@...ibm.com> > > > > diff --git a/kernel/sched.c b/kernel/sched.c > > index 2d7d8f1..e1a6985 100644 > > --- a/kernel/sched.c > > +++ b/kernel/sched.c > > @@ -2921,7 +2921,7 @@ static void update_cpu_load(struct rq *this_rq) > > */ > > if (new_load > old_load) > > new_load += scale-1; > > - this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i; > > + this_rq->cpu_load[i] = old_load + ((new_load - old_load) >> i); > > This wont work when new_load < old_load .. > Sorry for the noise. I must have read the previous if() condition incorrectly. > For ex: I tried this prog: > > #include <stdio.h> > > main() > { > unsigned long old_load = 100, new_load = 90, this_load, this_load1; > int i = 1, scale = 2 << i; > > this_load = (old_load*(scale-1) + new_load) >> i; > this_load1 = old_load + ((new_load - old_load) >> i); > > printf ("this_load = %u, this_load1 = %u \n", this_load, this_load1); > } > > This is what I get: > > $ ./a.out > this_load = 195, this_load1 = 2147483743 > $ > > > > -- > Regards, > vatsa -- Thanks and Regards gautham -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists