Hi Alex,

I am sorry I overlooked the changes you have made to the power
scheduling policies.Now you have just two : performance and powersave.

Hence you can ignore my below comments.But if you use group->capacity
instead of group->weight for threshold,like you did for balance policy
in your version5 of this patchset, dont you think the below patch can be
avoided? group->capacity being the threshold will automatically ensure
that you dont pack onto domains that share cpu power.

Regards
Preeti U Murthy

On 04/08/2013 08:47 AM, Preeti U Murthy wrote:
> Hi Alex,
> 
> On 04/04/2013 07:31 AM, Alex Shi wrote:
>> Packing tasks among such domain can't save power, just performance
>> losing. So no power balance on them.
> 
> As far as my understanding goes, powersave policy is the one that tries
> to pack tasks onto a SIBLING domain( domain where SD_SHARE_CPUPOWER is
> set).balance policy does not do that,meaning it does not pack on the
> domain that shares CPU power,but packs across all other domains.So the
> change you are making below results in nothing but the default behaviour
> of balance policy.
> 
> Correct me if I am wrong but my point is,looks to me,that the powersave
> policy is introduced in this patchset,and with the below patch its
> characteristic behaviour of packing onto domains sharing cpu power is
> removed,thus making it default to balance policy.Now there are two
> policies which behave the same way:balance and powersave.
> 
>>
>> Signed-off-by: Alex Shi <alex....@intel.com>
>> ---
>>  kernel/sched/fair.c | 7 ++++---
>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
>> index 047a1b3..3a0284b 100644
>> --- a/kernel/sched/fair.c
>> +++ b/kernel/sched/fair.c
>> @@ -3503,7 +3503,7 @@ static int get_cpu_for_power_policy(struct 
>> sched_domain *sd, int cpu,
>>
>>      policy = get_sd_sched_balance_policy(sd, cpu, p, sds);
>>      if (policy != SCHED_POLICY_PERFORMANCE && sds->group_leader) {
>> -            if (wakeup)
>> +            if (wakeup && !(sd->flags & SD_SHARE_CPUPOWER))
>>                      new_cpu = find_leader_cpu(sds->group_leader,
>>                                                      p, cpu, policy);
>>              /* for fork balancing and a little busy task */
>> @@ -4410,8 +4410,9 @@ static unsigned long task_h_load(struct task_struct *p)
>>  static inline void init_sd_lb_power_stats(struct lb_env *env,
>>                                              struct sd_lb_stats *sds)
>>  {
>> -    if (sched_balance_policy == SCHED_POLICY_PERFORMANCE ||
>> -                            env->idle == CPU_NOT_IDLE) {
>> +    if (sched_balance_policy == SCHED_POLICY_PERFORMANCE
>> +                    || env->sd->flags & SD_SHARE_CPUPOWER
>> +                    || env->idle == CPU_NOT_IDLE) {
>>              env->flags &= ~LBF_POWER_BAL;
>>              env->flags |= LBF_PERF_BAL;
>>              return;
>>
> 
> Regards
> Preeti U Murthy
> 

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

Reply via email to