From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8395DC433B4 for ; Wed, 14 Apr 2021 02:05:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5D98C613CC for ; Wed, 14 Apr 2021 02:05:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346639AbhDNCF7 (ORCPT ); Tue, 13 Apr 2021 22:05:59 -0400 Received: from mga03.intel.com ([134.134.136.65]:7635 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232952AbhDNCFx (ORCPT ); Tue, 13 Apr 2021 22:05:53 -0400 IronPort-SDR: zPa8Tb4xhdaXeSIZDpDc4yA4I5IRsveqNj9LDbwXdNL69E8KP34G+UgFJdRwmB4g+DHzOsqytL n6y6uwtYu2JA== X-IronPort-AV: E=McAfee;i="6200,9189,9953"; a="194571776" X-IronPort-AV: E=Sophos;i="5.82,221,1613462400"; d="scan'208";a="194571776" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2021 19:05:29 -0700 IronPort-SDR: dfRNi2XAqsNUFX2fNmBHGdCj9736rfmDNvoI/OHwGsYqmU8rV3cJFCyd5QejTfXKefy2ryp2qf HWC7mDM+CeMw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,221,1613462400"; d="scan'208";a="450625208" Received: from ranerica-svr.sc.intel.com ([172.25.110.23]) by FMSMGA003.fm.intel.com with ESMTP; 13 Apr 2021 19:05:29 -0700 From: Ricardo Neri To: "Peter Zijlstra (Intel)" , Ingo Molnar , Juri Lelli , Vincent Guittot Cc: Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Len Brown , Srinivas Pandruvada , Tim Chen , Aubrey Li , "Ravi V. Shankar" , Ricardo Neri , Quentin Perret , "Joel Fernandes (Google)" , linux-kernel@vger.kernel.org, Ricardo Neri , Aubrey Li , Ben Segall , Daniel Bristot de Oliveira Subject: [PATCH v2 2/4] sched/fair: Introduce arch_sched_asym_prefer_early() Date: Tue, 13 Apr 2021 19:04:34 -0700 Message-Id: <20210414020436.12980-3-ricardo.neri-calderon@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210414020436.12980-1-ricardo.neri-calderon@linux.intel.com> References: <20210414020436.12980-1-ricardo.neri-calderon@linux.intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce arch_sched_asym_prefer_early() so that architectures with SMT can delay the decision to label a candidate busiest group as group_asym_packing. When using asymmetric packing, high priority idle CPUs pull tasks from scheduling groups with low priority CPUs. The decision on using asymmetric packing for load balancing is done after collecting the statistics of a candidate busiest group. However, this decision needs to consider the state of SMT siblings of dst_cpu. Cc: Aubrey Li Cc: Ben Segall Cc: Daniel Bristot de Oliveira Cc: Dietmar Eggemann Cc: Joel Fernandes (Google) Cc: Mel Gorman Cc: Quentin Perret Cc: Srinivas Pandruvada Cc: Steven Rostedt Cc: Tim Chen Reviewed-by: Len Brown Signed-off-by: Ricardo Neri --- Changes since v1: * None --- include/linux/sched/topology.h | 1 + kernel/sched/fair.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h index 8f0f778b7c91..663b98959305 100644 --- a/include/linux/sched/topology.h +++ b/include/linux/sched/topology.h @@ -57,6 +57,7 @@ static inline int cpu_numa_flags(void) #endif extern int arch_asym_cpu_priority(int cpu); +extern bool arch_sched_asym_prefer_early(int a, int b); struct sched_domain_attr { int relax_domain_level; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 4ef3fa0d5e8d..e74da853b046 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -106,6 +106,15 @@ int __weak arch_asym_cpu_priority(int cpu) return -cpu; } +/* + * For asym packing, early check if CPUs with higher priority should be + * preferred. On some architectures, more data is needed to make a decision. + */ +bool __weak arch_sched_asym_prefer_early(int a, int b) +{ + return sched_asym_prefer(a, b); +} + /* * The margin used when comparing utilization with CPU capacity. * @@ -8458,7 +8467,7 @@ static inline void update_sg_lb_stats(struct lb_env *env, if (!local_group && env->sd->flags & SD_ASYM_PACKING && env->idle != CPU_NOT_IDLE && sgs->sum_h_nr_running && - sched_asym_prefer(env->dst_cpu, group->asym_prefer_cpu)) { + arch_sched_asym_prefer_early(env->dst_cpu, group->asym_prefer_cpu)) { sgs->group_asym_packing = 1; } -- 2.17.1