Received: by 10.223.185.116 with SMTP id b49csp384430wrg; Fri, 16 Feb 2018 00:12:15 -0800 (PST) X-Google-Smtp-Source: AH8x226AmoyLvRVnkeC/65UaAwJ7CMn5Fhg2EqeShQHMFpKbVRQdPqhFSK49HSgKF4rKaO0B6zAC X-Received: by 10.101.96.142 with SMTP id t14mr4448980pgu.58.1518768735205; Fri, 16 Feb 2018 00:12:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518768735; cv=none; d=google.com; s=arc-20160816; b=kSC5yBihm+7xx0v9cXYDFonUWHMpScL36Hw8AdGRAA90w2weX/Eg+oXBYo+vFXNre7 A5VqOEEGVa+8Bqu2KktA+ymLWG+Xb6ibls/NwvSNnv4AOoQg3JqbSgeObU3yX8Hs4+7u sZYSNq+irxQ+sJQbJdKv6ewtmKfQ6BnoY1PE1jr6TtwDLVj/QcUuS42V+87KnMLaNUjb RZEX6E/lWdBj3rmEbnU6oLxeswuvMCF0DcV/lJ9mRZ6275GvMtQLOO1M28weyYN/1set b76eyNiMieTVaqjTv95deeyDnNbxms85xTn1V+hiRWtZatjfQ9PgoiWywO8ZRnEPjwmn /q9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=xGbzqOfwXmemiERx1DC3tWSTuY5945x6cC9ITPXv8+A=; b=PEjqdbyI+PoyMz2X8xN4LlVVUQ2psoOgmUym/0+tFZ+MhAkeqBCp+V52mVBWTnQSSo ILBZUf22nAyq+knZOOPxyholFUs8onam7zE8h4zpfNR8DsTIDMybo73LomL23jlhfe/d hGTJqnvhAD/Rh5nYpizrdN56MmUr52/cAytVwqmJjvVWuL9ZO5t9+Pf49rvC7pNflA+w dfpuErOqfA6CPN2Rof6JuokyzjdI4TalXfWh01HZ/hLgMTcrMx2Ct9MnRAF5qx6CgHK3 Gip4f4s6lzIfvKX15zLW6KEEzuO56ZLlxlB8UJW0jfjLqjZ1ueTwbQhVBPpVvGbQVQvd 7+/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e25si2791398pfn.82.2018.02.16.00.12.00; Fri, 16 Feb 2018 00:12:15 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1425810AbeBOQXY (ORCPT + 99 others); Thu, 15 Feb 2018 11:23:24 -0500 Received: from foss.arm.com ([217.140.101.70]:57078 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1424438AbeBOQV0 (ORCPT ); Thu, 15 Feb 2018 11:21:26 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C0D7015AD; Thu, 15 Feb 2018 08:21:25 -0800 (PST) Received: from e105550-lin.cambridge.arm.com (e105550-lin.cambridge.arm.com [10.1.211.30]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6B4FA3F24D; Thu, 15 Feb 2018 08:21:24 -0800 (PST) From: Morten Rasmussen To: peterz@infradead.org, mingo@redhat.com Cc: valentin.schneider@arm.com, dietmar.eggemann@arm.com, vincent.guittot@linaro.org, linux-kernel@vger.kernel.org, Morten Rasmussen Subject: [PATCH 1/7] sched: Add static_key for asymmetric cpu capacity optimizations Date: Thu, 15 Feb 2018 16:20:48 +0000 Message-Id: <1518711654-23503-2-git-send-email-morten.rasmussen@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518711654-23503-1-git-send-email-morten.rasmussen@arm.com> References: <1518711654-23503-1-git-send-email-morten.rasmussen@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The existing asymmetric cpu capacity code should cause minimal overhead for others. Putting it behind a static_key, it has been done for SMT optimizations, would make it easier to extend and improve without causing harm to others moving forward. cc: Ingo Molnar cc: Peter Zijlstra Signed-off-by: Morten Rasmussen --- kernel/sched/fair.c | 3 +++ kernel/sched/sched.h | 1 + kernel/sched/topology.c | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 1070803cb423..452ad2e6f1a0 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6291,6 +6291,9 @@ static int wake_cap(struct task_struct *p, int cpu, int prev_cpu) { long min_cap, max_cap; + if (!static_branch_unlikely(&sched_asym_cpucapacity)) + return 0; + min_cap = min(capacity_orig_of(prev_cpu), capacity_orig_of(cpu)); max_cap = cpu_rq(cpu)->rd->max_cpu_capacity; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 2e95505e23c6..a06184906640 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1095,6 +1095,7 @@ DECLARE_PER_CPU(int, sd_llc_id); DECLARE_PER_CPU(struct sched_domain_shared *, sd_llc_shared); DECLARE_PER_CPU(struct sched_domain *, sd_numa); DECLARE_PER_CPU(struct sched_domain *, sd_asym); +extern struct static_key_false sched_asym_cpucapacity; struct sched_group_capacity { atomic_t ref; diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index 034cbed7f88b..517c57d312df 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -393,6 +393,7 @@ DEFINE_PER_CPU(int, sd_llc_id); DEFINE_PER_CPU(struct sched_domain_shared *, sd_llc_shared); DEFINE_PER_CPU(struct sched_domain *, sd_numa); DEFINE_PER_CPU(struct sched_domain *, sd_asym); +DEFINE_STATIC_KEY_FALSE(sched_asym_cpucapacity); static void update_top_cache_domain(int cpu) { @@ -420,6 +421,13 @@ static void update_top_cache_domain(int cpu) rcu_assign_pointer(per_cpu(sd_asym, cpu), sd); } +static void update_asym_cpucapacity(int cpu) +{ + if (!static_branch_unlikely(&sched_asym_cpucapacity) && + lowest_flag_domain(cpu, SD_ASYM_CPUCAPACITY)) + static_branch_enable(&sched_asym_cpucapacity); +} + /* * Attach the domain 'sd' to 'cpu' as its base domain. Callers must * hold the hotplug lock. @@ -1697,6 +1705,8 @@ build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *att cpu_attach_domain(sd, d.rd, i); } + + update_asym_cpucapacity(cpumask_first(cpu_map)); rcu_read_unlock(); if (rq && sched_debug_enabled) { -- 2.7.4