All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sai Gurrappadi <sgurrappadi@nvidia.com>
To: Morten Rasmussen <morten.rasmussen@arm.com>
Cc: <peterz@infradead.org>, <mingo@redhat.com>,
	<dietmar.eggemann@arm.com>, <yuyang.du@intel.com>,
	<vincent.guittot@linaro.org>, <mgalbraith@suse.de>,
	<linux-kernel@vger.kernel.org>,
	Peter Boonstoppel <pboonstoppel@nvidia.com>
Subject: Re: [PATCH v2 11/13] sched/fair: Avoid pulling tasks from non-overloaded higher capacity groups
Date: Thu, 14 Jul 2016 09:39:23 -0700	[thread overview]
Message-ID: <5787C03B.8010906@nvidia.com> (raw)
In-Reply-To: <20160630074958.GA12540@e105550-lin.cambridge.arm.com>

On 06/30/2016 12:49 AM, Morten Rasmussen wrote:
> On Thu, Jun 23, 2016 at 02:20:48PM -0700, Sai Gurrappadi wrote:
>> Hi Morten,
>>
>> On 06/22/2016 10:03 AM, Morten Rasmussen wrote:
>>
>> [...]
>>
>>>  
>>> +/*
>>> + * group_smaller_cpu_capacity: Returns true if sched_group sg has smaller
>>> + * per-cpu capacity than sched_group ref.
>>> + */
>>> +static inline bool
>>> +group_smaller_cpu_capacity(struct sched_group *sg, struct sched_group *ref)
>>> +{
>>> +	return sg->sgc->max_capacity * capacity_margin <
>>> +						ref->sgc->max_capacity * 1024;
>>> +}
>>> +
>>>  static inline enum
>>>  group_type group_classify(struct sched_group *group,
>>>  			  struct sg_lb_stats *sgs)
>>> @@ -6892,6 +6903,19 @@ static bool update_sd_pick_busiest(struct lb_env *env,
>>>  	if (sgs->avg_load <= busiest->avg_load)
>>>  		return false;
>>>  
>>> +	if (!(env->sd->flags & SD_ASYM_CPUCAPACITY))
>>> +		goto asym_packing;
>>> +
>>> +	/* Candidate sg has no more than one task per cpu and has
>>> +	 * higher per-cpu capacity. Migrating tasks to less capable
>>> +	 * cpus may harm throughput. Maximize throughput,
>>> +	 * power/energy consequences are not considered.
>>> +	 */
>>> +	if (sgs->sum_nr_running <= sgs->group_weight &&
>>> +	    group_smaller_cpu_capacity(sds->local, sg))
>>> +		return false;
>>> +
>>> +asym_packing:
>>
>> What about the case where IRQ/RT work reduces the capacity of some of
>> these bigger CPUs? sgc->max_capacity might not necessarily capture
>> that case.
> 
> Right, we could possibly improve this by using min_capacity instead, but
> we could end up allowing tasks to be pulled to lower capacity cpus just
> because one big cpu has reduced capacity due to RT/IRQ pressure and
> therefore has lowered the groups min_capacity.
> 
> Ideally we should check all the capacities, but that complicates things
> a lot.
> 
> Would you prefer min_capacity instead, or attempts to consider all the
> cpu capacities available in both groups?
> 

min_capacity as a start works I think given that we are only trying to make existing LB better, not necessarily optimizing for every case. Might have to revisit this anyways for thermals etc.

Thanks,
-Sai

  reply	other threads:[~2016-07-14 16:41 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-22 17:03 [PATCH v2 00/13] sched: Clean-ups and asymmetric cpu capacity support Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 01/13] sched: Fix power to capacity renaming in comment Morten Rasmussen
2016-08-10 18:03   ` [tip:sched/core] sched/core: " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 02/13] sched/fair: Consistent use of prev_cpu in wakeup path Morten Rasmussen
2016-06-22 18:04   ` Rik van Riel
2016-06-23  9:56     ` Morten Rasmussen
2016-06-23 12:24       ` Rik van Riel
2016-08-10 18:03   ` [tip:sched/core] sched/fair: Make the use of prev_cpu consistent in the " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 03/13] sched/fair: Optimize find_idlest_cpu() when there is no choice Morten Rasmussen
2016-07-13 12:20   ` Vincent Guittot
2016-08-10 18:03   ` [tip:sched/core] " tip-bot for Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 04/13] sched: Introduce SD_ASYM_CPUCAPACITY sched_domain topology flag Morten Rasmussen
2016-07-11  9:55   ` Peter Zijlstra
2016-07-11 10:42     ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 05/13] sched: Enable SD_BALANCE_WAKE for asymmetric capacity systems Morten Rasmussen
2016-07-11 10:04   ` Peter Zijlstra
2016-07-11 10:37     ` Morten Rasmussen
2016-07-11 11:04       ` Morten Rasmussen
2016-07-11 11:24         ` Peter Zijlstra
2016-07-12 14:26           ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 06/13] sched: Store maximum per-cpu capacity in root domain Morten Rasmussen
2016-07-11 10:18   ` Peter Zijlstra
2016-07-11 16:16     ` Dietmar Eggemann
2016-07-12 11:42       ` Peter Zijlstra
2016-07-13 11:18         ` Dietmar Eggemann
2016-07-13 12:40   ` Vincent Guittot
2016-07-13 13:48     ` Dietmar Eggemann
2016-07-13 16:37       ` Morten Rasmussen
2016-07-14 13:25         ` Vincent Guittot
2016-07-14 15:15           ` Morten Rasmussen
2016-07-15 11:46             ` Morten Rasmussen
2016-07-15 13:39               ` Vincent Guittot
2016-07-15 16:02                 ` Morten Rasmussen
2016-07-18 12:48                   ` Vincent Guittot
2016-07-18 15:11                     ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 07/13] sched/fair: Let asymmetric cpu configurations balance at wake-up Morten Rasmussen
2016-07-11 11:13   ` Peter Zijlstra
2016-07-11 12:32     ` Morten Rasmussen
2016-07-13 12:56   ` Vincent Guittot
2016-07-13 16:14     ` Morten Rasmussen
2016-07-14 13:45       ` Vincent Guittot
2016-07-15  8:37         ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 08/13] sched/fair: Compute task/cpu utilization at wake-up more correctly Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 09/13] sched/fair: Consider spare capacity in find_idlest_group() Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 10/13] sched: Add per-cpu max capacity to sched_group_capacity Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 11/13] sched/fair: Avoid pulling tasks from non-overloaded higher capacity groups Morten Rasmussen
2016-06-23 21:20   ` Sai Gurrappadi
2016-06-30  7:49     ` Morten Rasmussen
2016-07-14 16:39       ` Sai Gurrappadi [this message]
2016-07-15  8:39         ` Morten Rasmussen
2016-07-12 12:59   ` Peter Zijlstra
2016-07-12 14:34     ` Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 12/13] arm: Set SD_ASYM_CPUCAPACITY for big.LITTLE platforms Morten Rasmussen
2016-06-22 17:03 ` [PATCH v2 13/13] arm: Update arch_scale_cpu_capacity() to reflect change to define Morten Rasmussen
2016-06-28 10:20 ` [PATCH v2 00/13] sched: Clean-ups and asymmetric cpu capacity support Koan-Sin Tan
2016-06-30  7:53   ` Morten Rasmussen
2016-07-08  7:35 ` KEITA KOBAYASHI
2016-07-08  8:18   ` Morten Rasmussen
2016-07-11  8:33 ` Morten Rasmussen
2016-07-11 12:44   ` Vincent Guittot
2016-07-12 13:25   ` Peter Zijlstra
2016-07-12 14:39     ` Morten Rasmussen
2016-07-13 12:06 ` Vincent Guittot
2016-07-13 15:54   ` Morten Rasmussen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5787C03B.8010906@nvidia.com \
    --to=sgurrappadi@nvidia.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgalbraith@suse.de \
    --cc=mingo@redhat.com \
    --cc=morten.rasmussen@arm.com \
    --cc=pboonstoppel@nvidia.com \
    --cc=peterz@infradead.org \
    --cc=vincent.guittot@linaro.org \
    --cc=yuyang.du@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.