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

Preeti U Murthy
2013-03-29T12:43:58Z

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