From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755775AbcEXK2v (ORCPT ); Tue, 24 May 2016 06:28:51 -0400 Received: from foss.arm.com ([217.140.101.70]:56668 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755757AbcEXK2u (ORCPT ); Tue, 24 May 2016 06:28:50 -0400 Date: Tue, 24 May 2016 11:29:29 +0100 From: Morten Rasmussen To: Vincent Guittot Cc: Peter Zijlstra , "mingo@redhat.com" , Dietmar Eggemann , Yuyang Du , mgalbraith@suse.de, linux-kernel Subject: Re: [PATCH 06/16] sched: Disable WAKE_AFFINE for asymmetric configurations Message-ID: <20160524102928.GF27946@e105550-lin.cambridge.arm.com> References: <1464001138-25063-1-git-send-email-morten.rasmussen@arm.com> <1464001138-25063-7-git-send-email-morten.rasmussen@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 24, 2016 at 11:10:28AM +0200, Vincent Guittot wrote: > On 23 May 2016 at 12:58, Morten Rasmussen wrote: > > If the system has cpu of different compute capacities (e.g. big.LITTLE) > > let affine wakeups be constrained to cpus of the same type. > > Can you explain why you don't want wake affine with cpus with > different compute capacity ? I should have made the overall idea a bit more clear. The idea is to deal with cross-capacity migrations in the find_idlest_{group, cpu}{} path so we don't have to touch select_idle_sibling(). select_idle_sibling() is critical for wake-up latency, and I'm assumed that people wouldn't like adding extra overhead in there to deal with capacity and utilization. So the overall idea is that symmetric capacity systems, everything should work as normal. For asymmetric capacity systems, we restrict select_idle_sibling() to only look among same-capacity cpus and then use wake_cap() to use find_idlest_{group, cpu}() to look wider if we think should look for cpu with higher capacity than the previous one. So, for assymmetric cpus we take one of the two routes depending on whether a cpu of the same capacity as the previous one is okay. Do that make any sense? > > > > > cc: Ingo Molnar > > cc: Peter Zijlstra > > > > Signed-off-by: Morten Rasmussen > > --- > > kernel/sched/core.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > index d9619a3..558ec4a 100644 > > --- a/kernel/sched/core.c > > +++ b/kernel/sched/core.c > > @@ -6410,6 +6410,9 @@ sd_init(struct sched_domain_topology_level *tl, int cpu) > > sd->idle_idx = 1; > > } > > > > + if (sd->flags & SD_ASYM_CPUCAPACITY) > > + sd->flags &= ~SD_WAKE_AFFINE; > > + > > sd->private = &tl->data; > > > > return sd; > > -- > > 1.9.1 > >