2023-06-20 08:33:35

by Miaohe Lin

[permalink] [raw]
Subject: [PATCH] sched/fair: Use recent_used_cpu to test p->cpus_ptr

When checking whether a recently used CPU can be a potential idle
candidate, recent_used_cpu should be used to test p->cpus_ptr as
p->recent_used_cpu is not equal to recent_used_cpu and candidate
decision is made based on recent_used_cpu here.

Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")
Signed-off-by: Miaohe Lin <[email protected]>
---
kernel/sched/fair.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 7666dbc2b788..3cc06cfca350 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7156,7 +7156,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
recent_used_cpu != target &&
cpus_share_cache(recent_used_cpu, target) &&
(available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
- cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr) &&
+ cpumask_test_cpu(recent_used_cpu, p->cpus_ptr) &&
asym_fits_cpu(task_util, util_min, util_max, recent_used_cpu)) {
return recent_used_cpu;
}
--
2.27.0



2023-06-20 18:32:47

by Phil Auld

[permalink] [raw]
Subject: Re: [PATCH] sched/fair: Use recent_used_cpu to test p->cpus_ptr

On Tue, Jun 20, 2023 at 04:07:47PM +0800 Miaohe Lin wrote:
> When checking whether a recently used CPU can be a potential idle
> candidate, recent_used_cpu should be used to test p->cpus_ptr as
> p->recent_used_cpu is not equal to recent_used_cpu and candidate
> decision is made based on recent_used_cpu here.
>
> Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")
> Signed-off-by: Miaohe Lin <[email protected]>
> ---
> kernel/sched/fair.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 7666dbc2b788..3cc06cfca350 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -7156,7 +7156,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
> recent_used_cpu != target &&
> cpus_share_cache(recent_used_cpu, target) &&
> (available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
> - cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr) &&
> + cpumask_test_cpu(recent_used_cpu, p->cpus_ptr) &&
> asym_fits_cpu(task_util, util_min, util_max, recent_used_cpu)) {
> return recent_used_cpu;
> }
> --
> 2.27.0
>

This looks correct to me.

Reviewed-by: Phil Auld <[email protected]>


--


2023-06-21 10:30:39

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] sched/fair: Use recent_used_cpu to test p->cpus_ptr

On Tue, Jun 20, 2023 at 04:07:47PM +0800, Miaohe Lin wrote:
> When checking whether a recently used CPU can be a potential idle
> candidate, recent_used_cpu should be used to test p->cpus_ptr as
> p->recent_used_cpu is not equal to recent_used_cpu and candidate
> decision is made based on recent_used_cpu here.
>
> Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs

2023-06-21 11:50:11

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched/fair: Use recent_used_cpu to test p->cpus_ptr

On Wed, Jun 21, 2023 at 11:19:15AM +0100, Mel Gorman wrote:
> On Tue, Jun 20, 2023 at 04:07:47PM +0800, Miaohe Lin wrote:
> > When checking whether a recently used CPU can be a potential idle
> > candidate, recent_used_cpu should be used to test p->cpus_ptr as
> > p->recent_used_cpu is not equal to recent_used_cpu and candidate
> > decision is made based on recent_used_cpu here.
> >
> > Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")
>
> Acked-by: Mel Gorman <[email protected]>

Thanks!

2023-07-10 08:34:40

by tip-bot2 for Zqiang

[permalink] [raw]
Subject: [tip: sched/urgent] sched/fair: Use recent_used_cpu to test p->cpus_ptr

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

Commit-ID: ae2ad293d6be143ad223f5f947cca07bcbe42595
Gitweb: https://git.kernel.org/tip/ae2ad293d6be143ad223f5f947cca07bcbe42595
Author: Miaohe Lin <[email protected]>
AuthorDate: Tue, 20 Jun 2023 16:07:47 +08:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Mon, 10 Jul 2023 09:52:30 +02:00

sched/fair: Use recent_used_cpu to test p->cpus_ptr

When checking whether a recently used CPU can be a potential idle
candidate, recent_used_cpu should be used to test p->cpus_ptr as
p->recent_used_cpu is not equal to recent_used_cpu and candidate
decision is made based on recent_used_cpu here.

Fixes: 89aafd67f28c ("sched/fair: Use prev instead of new target as recent_used_cpu")
Signed-off-by: Miaohe Lin <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Reviewed-by: Phil Auld <[email protected]>
Acked-by: Mel Gorman <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
kernel/sched/fair.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index a80a739..b3e25be 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7174,7 +7174,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
recent_used_cpu != target &&
cpus_share_cache(recent_used_cpu, target) &&
(available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
- cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr) &&
+ cpumask_test_cpu(recent_used_cpu, p->cpus_ptr) &&
asym_fits_cpu(task_util, util_min, util_max, recent_used_cpu)) {
return recent_used_cpu;
}