lkml.org 
[lkml]   [2008]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] sched: Improve readability in update_cpu_load() code
    On Thu, May 15, 2008 at 06:34:59PM +0530, Gautham R Shenoy wrote:
    > Author: Gautham R Shenoy <ego@in.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@in.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 ..

    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


    \
     
     \ /
      Last update: 2008-05-15 16:45    [W:0.021 / U:1.588 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site