linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Morten Rasmussen <morten.rasmussen@arm.com>
To: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: mingo@redhat.com, tglx@linutronix.de, hpa@zytor.com,
	rjw@rjwysocki.net, peterz@infradead.org, x86@kernel.org,
	bp@suse.de, sudeep.holla@arm.com, ak@linux.intel.com,
	linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,
	alexey.klimov@arm.com, viresh.kumar@linaro.org,
	akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	lenb@kernel.org, tim.c.chen@linux.intel.com,
	paul.gortmaker@windriver.com, jpoimboe@redhat.com,
	mcgrof@kernel.org, jgross@suse.com, robert.moore@intel.com,
	dvyukov@google.com, jeyu@redhat.com
Subject: Re: [PATCH 03/11] sched: Extend scheduler's asym packing
Date: Thu, 25 Aug 2016 12:22:52 +0100	[thread overview]
Message-ID: <20160825112251.GA1323@e105550-lin.cambridge.arm.com> (raw)
In-Reply-To: <1471559812-19967-4-git-send-email-srinivas.pandruvada@linux.intel.com>

On Thu, Aug 18, 2016 at 03:36:44PM -0700, Srinivas Pandruvada wrote:
> From: Tim Chen <tim.c.chen@linux.intel.com>
> 
> We generalize the scheduler's asym packing to provide an
> ordering of the cpu beyond just the cpu number.  This allows
> the use of the ASYM_PACKING scheduler machinery to move
> loads to prefered CPU in a sched domain based on a preference
> defined by sched_asym_prefer function.
> 
> We also record the most preferred cpu in a sched group when
> we build the cpu's capacity for fast lookup of preferred cpu
> during load balancing.
> 
> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

[...]

> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index c64fc51..75e1002 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -532,6 +532,22 @@ struct dl_rq {
>  
>  #ifdef CONFIG_SMP
>  
> +#ifndef sched_asym_prefer
> +
> +/* For default ASYM_PACKING, lower numbered cpu is prefered */
> +static inline bool sched_asym_prefer(int a, int b)
> +{
> +	return a < b;
> +}
> +
> +#endif /* sched_asym_prefer */

Isn't this a very significant change in the interface between
architecture and the scheduler?

If I'm not mistaken, our current interface is quite strict when it comes
to information passed from the architecture into the scheduler. We allow
'topology' flags, but not behavioural flags, to be set by the
architecture, and the architecture can expose current and max cpu
capacities through the arch_scale_*() functions. For NUMA, we can expose
'distance' between nodes (and more?).

These are meant to describe the system topology to the scheduler, so it
can make better decisions on its own. sched_asym_prefer() is is not only
affecting scheduler behaviour, it is handing off scheduling decisions to
architecture code. In essence allowing logic to be plugged into the
scheduler, although with a somewhat limited scope of impact.

Should this been seen as the architecture/scheduler is up for revision
and we will start allowing architecture code to plug in function to
affect scheduling behaviour?

I haven't reviewed the entire patch set in detail, but why can't the cpu
priority list be handed to the scheduler instead of moving scheduling
decisions out of the scheduler?

Isn't it possible to express the cpu 'priority' as different cpu
capacities instead? Without understanding the details of ITMT, it seems
to me that what you really have is different cpu compute capacities, and
that is what we have cpu capacity for.

Is the intention long term to change the cpu priority order on the fly,
otherwise I don't see why you would put the logic in architecture code?

Finally, the existing callback functions from the scheduler to
architecture code are prefixed with arch_, I think this one should do
the same to make it clear that this function may be implemented by
generic scheduler code.

Thanks,
Morten

  reply	other threads:[~2016-08-25 11:22 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-18 22:36 [PATCH 00/11] Support Intel® Turbo Boost Max Technology 3.0 Srinivas Pandruvada
2016-08-18 22:36 ` [PATCH 01/11] sched, cpuset: Add regenerate_sched_domains function to rebuild all sched domains Srinivas Pandruvada
2016-08-22 13:52   ` Morten Rasmussen
2016-08-22 19:51     ` Tim Chen
2016-08-18 22:36 ` [PATCH 02/11] sched, x86: Add SD_ASYM_PACKING flags to x86 cpu topology for cpus supporting Intel Turbo Boost Max Technology Srinivas Pandruvada
2016-08-18 22:36 ` [PATCH 03/11] sched: Extend scheduler's asym packing Srinivas Pandruvada
2016-08-25 11:22   ` Morten Rasmussen [this message]
2016-08-25 11:45     ` Peter Zijlstra
2016-08-25 13:18       ` Morten Rasmussen
2016-08-25 13:45         ` Peter Zijlstra
2016-08-26 10:39           ` Morten Rasmussen
2016-08-26 12:42             ` Peter Zijlstra
2016-08-26 17:25               ` Tim Chen
2016-08-26 23:14                 ` Tim Chen
2016-08-18 22:36 ` [PATCH 04/11] sched,x86: Enable Turbo Boost Max Technology Srinivas Pandruvada
2016-08-22  9:01   ` kbuild test robot
2016-08-22 19:04     ` Tim Chen
2016-08-24 10:18   ` Ingo Molnar
2016-08-24 17:50     ` Tim Chen
2016-08-24 18:08       ` Ingo Molnar
2016-08-24 18:22         ` Peter Zijlstra
2016-08-18 22:36 ` [PATCH 05/11] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config Srinivas Pandruvada
2016-08-20  0:46   ` Rafael J. Wysocki
2016-08-18 22:36 ` [PATCH 06/11] acpi: cpcc: Add integer read support Srinivas Pandruvada
2016-08-18 22:36 ` [PATCH 07/11] acpi: cppc: Add support for function fixed hardware address Srinivas Pandruvada
2016-08-20  0:49   ` Rafael J. Wysocki
2016-08-18 22:36 ` [PATCH 08/11] acpi: cppc: Add prefix cppc to cpudata structure name Srinivas Pandruvada
2016-08-18 22:36 ` [PATCH 09/11] acpi: bus: Enable HWP CPPC objects Srinivas Pandruvada
2016-08-20  0:49   ` Rafael J. Wysocki
2016-08-18 22:36 ` [PATCH 10/11] acpi: bus: Set _OSC for diverse core support Srinivas Pandruvada
2016-08-20  0:51   ` Rafael J. Wysocki
2016-08-18 22:36 ` [PATCH 11/11] cpufreq: intel_pstate: Use CPPC to get max performance Srinivas Pandruvada
2016-08-22 11:59   ` kbuild test robot

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=20160825112251.GA1323@e105550-lin.cambridge.arm.com \
    --to=morten.rasmussen@arm.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexey.klimov@arm.com \
    --cc=bp@suse.de \
    --cc=dvyukov@google.com \
    --cc=hpa@zytor.com \
    --cc=jeyu@redhat.com \
    --cc=jgross@suse.com \
    --cc=jpoimboe@redhat.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=mingo@redhat.com \
    --cc=paul.gortmaker@windriver.com \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=robert.moore@intel.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=sudeep.holla@arm.com \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=viresh.kumar@linaro.org \
    --cc=x86@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).