Re: [patch v5 14/15] sched: power aware load balance

From: Preeti U Murthy
Date: Fri Mar 29 2013 - 08:44:17 EST


Hi Alex,

On 03/25/2013 10:22 AM, Alex Shi wrote:
> On 03/22/2013 01:14 PM, Preeti U Murthy wrote:
>>>>
>>>> the value get from decay_load():
>>>> sa->runnable_avg_sum = decay_load(sa->runnable_avg_sum,
>>>> in decay_load it is possible to be set zero.
>> Yes you are right, it is possible to be set to 0, but after a very long
>> time, to be more precise, nearly 2 seconds. If you look at decay_load(),
>> if the period between last update and now has crossed (32*63),only then
>> will the runnable_avg_sum become 0, else it will simply decay.
>>
>> This means that for nearly 2seconds,consolidation of loads may not be
>> possible even after the runqueues have finished executing tasks running
>> on them.
>
> Look into the decay_load(), since the LOAD_AVG_MAX is about 47742, so
> after 16 * 32ms, the maximum avg sum will be decay to zero. 2^16 = 65536
>
> Yes, compare to accumulate time 345ms, the decay is not symmetry, and
> not precise, seems it has space to tune well. But it is acceptable now.
>>
>> The exact experiment that I performed was running ebizzy, with just two
>> threads. My setup was 2 socket,2 cores each,4 threads each core. So a 16
>> logical cpu machine.When I begin running ebizzy with balance policy, the
>> 2 threads of ebizzy are found one on each socket, while I would expect
>> them to be on the same socket. All other cpus, except the ones running
>> ebizzy threads are idle and not running anything on either socket.
>> I am not running any other processes.
>
> did you try the simplest benchmark: while true; do :; done

Yeah I tried out this while true; do :; done benchmark on a vm which ran
on 2 socket, 2 cores each socket and 2 threads each core emulation.
I ran two instances of this loop with balance policy on, and it was
found that there was one instance running on each socket, rather than
both instances getting consolidated on one socket.

But when I apply the change where we do not consider rq->util if it has
no nr_running on the rq,the two instances of the above benchmark get
consolidated onto one socket.


> I am writing the v6 version which include rt_util etc. you may test on
> it after I send out. :)

Sure will do so.

Regards
Preeti U Murthy

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/