lkml.org 
[lkml]   [2013]   [Apr]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch v7 20/21] sched: don't do power balance on share cpu power domain
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.shi@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
>



\
 
 \ /
  Last update: 2013-04-08 06:21    [W:0.109 / U:2.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site