* [PATCH v3] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity
@ 2021-11-29 17:31 Vincent Donnefort
2021-12-04 9:40 ` Peter Zijlstra
2021-12-06 15:22 ` [tip: sched/core] " tip-bot2 for Vincent Donnefort
0 siblings, 2 replies; 3+ messages in thread
From: Vincent Donnefort @ 2021-11-29 17:31 UTC (permalink / raw)
To: peterz, mingo, vincent.guittot
Cc: linux-kernel, dietmar.eggemann, valentin.schneider,
Vincent Donnefort
select_idle_sibling() has a special case for tasks woken up by a per-CPU
kthread where the selected CPU is the previous one. For asymmetric CPU
capacity systems, the assumption was that the wakee couldn't have a
bigger utilization during task placement than it used to have during the
last activation. That was not considering uclamp.min which can completely
change between two task activations and as a consequence mandates the
fitness criterion asym_fits_capacity(), even for the exit path described
above.
Fixes: b4c9c9f15649 ("sched/fair: Prefer prev cpu in asymmetric wakeup path")
Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
---
V2 -> V3:
* A more verbose commit message.
V1 -> V2:
* Point to the correct fixed patch.
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 6291876a9d32..b90dc6fd86ca 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -6410,7 +6410,8 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
*/
if (is_per_cpu_kthread(current) &&
prev == smp_processor_id() &&
- this_rq()->nr_running <= 1) {
+ this_rq()->nr_running <= 1 &&
+ asym_fits_capacity(task_util, prev)) {
return prev;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v3] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity
2021-11-29 17:31 [PATCH v3] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity Vincent Donnefort
@ 2021-12-04 9:40 ` Peter Zijlstra
2021-12-06 15:22 ` [tip: sched/core] " tip-bot2 for Vincent Donnefort
1 sibling, 0 replies; 3+ messages in thread
From: Peter Zijlstra @ 2021-12-04 9:40 UTC (permalink / raw)
To: Vincent Donnefort
Cc: mingo, vincent.guittot, linux-kernel, dietmar.eggemann,
valentin.schneider
On Mon, Nov 29, 2021 at 05:31:15PM +0000, Vincent Donnefort wrote:
> select_idle_sibling() has a special case for tasks woken up by a per-CPU
> kthread where the selected CPU is the previous one. For asymmetric CPU
> capacity systems, the assumption was that the wakee couldn't have a
> bigger utilization during task placement than it used to have during the
> last activation. That was not considering uclamp.min which can completely
> change between two task activations and as a consequence mandates the
> fitness criterion asym_fits_capacity(), even for the exit path described
> above.
>
> Fixes: b4c9c9f15649 ("sched/fair: Prefer prev cpu in asymmetric wakeup path")
> Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
> Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
> Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread* [tip: sched/core] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity
2021-11-29 17:31 [PATCH v3] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity Vincent Donnefort
2021-12-04 9:40 ` Peter Zijlstra
@ 2021-12-06 15:22 ` tip-bot2 for Vincent Donnefort
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot2 for Vincent Donnefort @ 2021-12-06 15:22 UTC (permalink / raw)
To: linux-tip-commits
Cc: Vincent Donnefort, Peter Zijlstra (Intel), Valentin Schneider,
Dietmar Eggemann, x86, linux-kernel
The following commit has been merged into the sched/core branch of tip:
Commit-ID: 014ba44e8184e1acf93e0cbb7089ee847802f8f0
Gitweb: https://git.kernel.org/tip/014ba44e8184e1acf93e0cbb7089ee847802f8f0
Author: Vincent Donnefort <vincent.donnefort@arm.com>
AuthorDate: Mon, 29 Nov 2021 17:31:15
Committer: Peter Zijlstra <peterz@infradead.org>
CommitterDate: Sat, 04 Dec 2021 10:56:21 +01:00
sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity
select_idle_sibling() has a special case for tasks woken up by a per-CPU
kthread where the selected CPU is the previous one. For asymmetric CPU
capacity systems, the assumption was that the wakee couldn't have a
bigger utilization during task placement than it used to have during the
last activation. That was not considering uclamp.min which can completely
change between two task activations and as a consequence mandates the
fitness criterion asym_fits_capacity(), even for the exit path described
above.
Fixes: b4c9c9f15649 ("sched/fair: Prefer prev cpu in asymmetric wakeup path")
Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://lkml.kernel.org/r/20211129173115.4006346-1-vincent.donnefort@arm.com
---
kernel/sched/fair.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 5cd2798..0672218 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -6400,7 +6400,8 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
if (is_per_cpu_kthread(current) &&
in_task() &&
prev == smp_processor_id() &&
- this_rq()->nr_running <= 1) {
+ this_rq()->nr_running <= 1 &&
+ asym_fits_capacity(task_util, prev)) {
return prev;
}
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-12-06 15:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-29 17:31 [PATCH v3] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity Vincent Donnefort
2021-12-04 9:40 ` Peter Zijlstra
2021-12-06 15:22 ` [tip: sched/core] " tip-bot2 for Vincent Donnefort
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.