mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] sched/cache: Don't use fits_capacity() to compare thread and CPU counts
@ 2026-11-04  2:09 Zhan Xusheng
  2026-11-04 18:56 ` Kayra Cizmeci
  0 siblings, 1 reply; 2+ messages in thread
From: Zhan Xusheng @ 2026-11-04  2:09 UTC (permalink / raw)
  To: peterz, mingo
  Cc: tim.c.chen, qyousef, yu.c.chen, vincent.guittot, juri.lelli,
	dietmar.eggemann, rostedt, bsegall, mgorman, vschneid,
	linux-kernel, zhanxusheng

From: Zhan Xusheng <zhanxusheng@xiaomi.com>

invalid_llc_nr() checks that a process's running threads stay below 80%
of the LLC's cores, scaled by llc_aggr_tolerance, with fits_capacity().
fits_capacity() is meant for capacity values; here it only supplies the
20% margin.

Give the check its own helper. x * 5 < y * 4 is the same comparison as
x * 1280 < y * 1024, so there is no functional change.

Signed-off-by: Zhan Xusheng <zhanxusheng@xiaomi.com>
Reviewed-by: Tim Chen <tim.c.chen@linux.intel.com>
Reviewed-by: Qais Yousef <qyousef@layalina.io>
---
Qais's series changes fits_capacity() to take a CPU number as its
second argument [1]; this call would then pass the CPU count as a CPU
number without a warning.

v2: reword the comment (Tim); move the reason above out of the
    changelog; add the Reviewed-by tags.
v1: https://lore.kernel.org/all/20261102021536.1026143-1-zhanxusheng1024@gmail.com/

[1] https://lore.kernel.org/all/20260504020003.71306-5-qyousef@layalina.io/

 kernel/sched/fair.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index cfc982205b98..a7467fe425e6 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1469,6 +1469,12 @@ static bool exceed_llc_capacity(struct sched_cache_group *grp, int cpu)
 	return false;
 }
 
+/* Number of running threads below 80% of LLC's cores for default setting */
+static inline bool fits_llc_nr(u64 nr_threads, unsigned int nr_cpus)
+{
+	return nr_threads * 5 < (u64)nr_cpus * 4;
+}
+
 static bool invalid_llc_nr(struct sched_cache_group *grp, struct task_struct *p,
 			   int cpu)
 {
@@ -1485,8 +1491,8 @@ static bool invalid_llc_nr(struct sched_cache_group *grp, struct task_struct *p,
 	if (scale == INT_MAX)
 		return false;
 
-	return !fits_capacity((READ_ONCE(grp->nr_running_avg) * cpu_smt_num_threads),
-			(scale * per_cpu(sd_llc_size, cpu)));
+	return !fits_llc_nr(READ_ONCE(grp->nr_running_avg) * cpu_smt_num_threads,
+			    scale * per_cpu(sd_llc_size, cpu));
 }
 
 /*
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] sched/cache: Don't use fits_capacity() to compare thread and CPU counts
  2026-11-04  2:09 [PATCH v2] sched/cache: Don't use fits_capacity() to compare thread and CPU counts Zhan Xusheng
@ 2026-11-04 18:56 ` Kayra Cizmeci
  0 siblings, 0 replies; 2+ messages in thread
From: Kayra Cizmeci @ 2026-11-04 18:56 UTC (permalink / raw)
  To: Zhan Xusheng
  Cc: peterz, mingo, tim.c.chen, qyousef, yu.c.chen, vincent.guittot,
	juri.lelli, dietmar.eggemann, rostedt, bsegall, mgorman,
	vschneid, linux-kernel, zhanxusheng


Hi Zhan!

On Wed, Nov 04, 2026 at 10:09:54AM +0800, Zhan Xusheng wrote:
> From: Zhan Xusheng <zhanxusheng@xiaomi.com>

I said myself that I'll review this someday. But forgot when to :/.

Hope I'm not too late.

> 
> invalid_llc_nr() checks that a process's running threads stay below 80%
> of the LLC's cores, scaled by llc_aggr_tolerance, with fits_capacity().
> fits_capacity() is meant for capacity values; here it only supplies the
> 20% margin.
> 
> Give the check its own helper. x * 5 < y * 4 is the same comparison as
> x * 1280 < y * 1024, so there is no functional change.

Magic of 256.

> 
> Signed-off-by: Zhan Xusheng <zhanxusheng@xiaomi.com>
> Reviewed-by: Tim Chen <tim.c.chen@linux.intel.com>
> Reviewed-by: Qais Yousef <qyousef@layalina.io>
> ---
> Qais's series changes fits_capacity() to take a CPU number as its
> second argument [1]; this call would then pass the CPU count as a CPU
> number without a warning.
> 
> v2: reword the comment (Tim); move the reason above out of the
>     changelog; add the Reviewed-by tags.
> v1: https://lore.kernel.org/all/20261102021536.1026143-1-zhanxusheng1024@gmail.com/
> 
> [1] https://lore.kernel.org/all/20260504020003.71306-5-qyousef@layalina.io/
> 
>  kernel/sched/fair.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index cfc982205b98..a7467fe425e6 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -1469,6 +1469,12 @@ static bool exceed_llc_capacity(struct sched_cache_group *grp, int cpu)
>  	return false;
>  }
>  
> +/* Number of running threads below 80% of LLC's cores for default setting */
> +static inline bool fits_llc_nr(u64 nr_threads, unsigned int nr_cpus)
> +{
> +	return nr_threads * 5 < (u64)nr_cpus * 4;
> +}
> +
>  static bool invalid_llc_nr(struct sched_cache_group *grp, struct task_struct *p,
>  			   int cpu)
>  {
> @@ -1485,8 +1491,8 @@ static bool invalid_llc_nr(struct sched_cache_group *grp, struct task_struct *p,
>  	if (scale == INT_MAX)
>  		return false;
>  
> -	return !fits_capacity((READ_ONCE(grp->nr_running_avg) * cpu_smt_num_threads),
> -			(scale * per_cpu(sd_llc_size, cpu)));
> +	return !fits_llc_nr(READ_ONCE(grp->nr_running_avg) * cpu_smt_num_threads,
> +			    scale * per_cpu(sd_llc_size, cpu));
>  }
>  
>  /*
> -- 
> 2.43.0
> 

Yeah well they behave the same.


Reviewed-by: Kayra Cizmeci <kayracizmeci@gmail.com>

I'll normally say Thanks, but I'll try 'cheers' for today.


Cheers,

Kayra


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-04 18:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-04  2:09 [PATCH v2] sched/cache: Don't use fits_capacity() to compare thread and CPU counts Zhan Xusheng
2026-11-04 18:56 ` Kayra Cizmeci

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®