All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot2 for Dietmar Eggemann" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Juri Lelli <juri.lelli@redhat.com>, x86 <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: [tip: sched/core] sched/deadline: Add dl_bw_capacity()
Date: Tue, 16 Jun 2020 12:21:52 -0000	[thread overview]
Message-ID: <159231011211.16989.3507232109054333136.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20200520134243.19352-3-dietmar.eggemann@arm.com>

The following commit has been merged into the sched/core branch of tip:

Commit-ID:     fc9dc698472aa460a8b3b036d9b1d0b751f12f58
Gitweb:        https://git.kernel.org/tip/fc9dc698472aa460a8b3b036d9b1d0b751f12f58
Author:        Dietmar Eggemann <dietmar.eggemann@arm.com>
AuthorDate:    Wed, 20 May 2020 15:42:40 +02:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Mon, 15 Jun 2020 14:10:05 +02:00

sched/deadline: Add dl_bw_capacity()

Capacity-aware SCHED_DEADLINE Admission Control (AC) needs root domain
(rd) CPU capacity sum.

Introduce dl_bw_capacity() which for a symmetric rd w/ a CPU capacity
of SCHED_CAPACITY_SCALE simply relies on dl_bw_cpus() to return #CPUs
multiplied by SCHED_CAPACITY_SCALE.

For an asymmetric rd or a CPU capacity < SCHED_CAPACITY_SCALE it
computes the CPU capacity sum over rd span and cpu_active_mask.

A 'XXX Fix:' comment was added to highlight that if 'rq->rd ==
def_root_domain' AC should be performed against the capacity of the
CPU the task is running on rather the rd CPU capacity sum. This
issue already exists w/o capacity awareness.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Link: https://lkml.kernel.org/r/20200520134243.19352-3-dietmar.eggemann@arm.com
---
 kernel/sched/deadline.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index ec90265..01f474a 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -69,6 +69,34 @@ static inline int dl_bw_cpus(int i)
 
 	return cpus;
 }
+
+static inline unsigned long __dl_bw_capacity(int i)
+{
+	struct root_domain *rd = cpu_rq(i)->rd;
+	unsigned long cap = 0;
+
+	RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held(),
+			 "sched RCU must be held");
+
+	for_each_cpu_and(i, rd->span, cpu_active_mask)
+		cap += capacity_orig_of(i);
+
+	return cap;
+}
+
+/*
+ * XXX Fix: If 'rq->rd == def_root_domain' perform AC against capacity
+ * of the CPU the task is running on rather rd's \Sum CPU capacity.
+ */
+static inline unsigned long dl_bw_capacity(int i)
+{
+	if (!static_branch_unlikely(&sched_asym_cpucapacity) &&
+	    capacity_orig_of(i) == SCHED_CAPACITY_SCALE) {
+		return dl_bw_cpus(i) << SCHED_CAPACITY_SHIFT;
+	} else {
+		return __dl_bw_capacity(i);
+	}
+}
 #else
 static inline struct dl_bw *dl_bw_of(int i)
 {
@@ -79,6 +107,11 @@ static inline int dl_bw_cpus(int i)
 {
 	return 1;
 }
+
+static inline unsigned long dl_bw_capacity(int i)
+{
+	return SCHED_CAPACITY_SCALE;
+}
 #endif
 
 static inline

  parent reply	other threads:[~2020-06-16 12:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-20 13:42 [PATCH v3 0/5] Capacity awareness for SCHED_DEADLINE Dietmar Eggemann
2020-05-20 13:42 ` [PATCH v3 1/5] sched/deadline: Optimize dl_bw_cpus() Dietmar Eggemann
2020-05-22 14:57   ` Juri Lelli
2020-06-16 12:21   ` [tip: sched/core] " tip-bot2 for Dietmar Eggemann
2020-05-20 13:42 ` [PATCH v3 2/5] sched/deadline: Add dl_bw_capacity() Dietmar Eggemann
2020-05-22 14:58   ` Juri Lelli
2020-06-16 12:21   ` tip-bot2 for Dietmar Eggemann [this message]
2020-05-20 13:42 ` [PATCH v3 3/5] sched/deadline: Improve admission control for asymmetric CPU capacities Dietmar Eggemann
2020-05-22 14:58   ` Juri Lelli
2020-06-16 12:21   ` [tip: sched/core] " tip-bot2 for Luca Abeni
2020-05-20 13:42 ` [PATCH v3 4/5] sched/deadline: Make DL capacity-aware Dietmar Eggemann
2020-05-22 14:58   ` Juri Lelli
2020-06-16 12:21   ` [tip: sched/core] " tip-bot2 for Luca Abeni
2020-05-20 13:42 ` [PATCH v3 5/5] sched/deadline: Implement fallback mechanism for !fit case Dietmar Eggemann
2020-05-22 14:59   ` Juri Lelli
2020-06-16 12:21   ` [tip: sched/core] " tip-bot2 for Luca Abeni
2020-06-10 10:26 ` [PATCH v3 0/5] Capacity awareness for SCHED_DEADLINE Peter Zijlstra

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=159231011211.16989.3507232109054333136.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=dietmar.eggemann@arm.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=peterz@infradead.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 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.