Re: [patch V3 13/20] sched/mmcid: Provide precomputed maximal value
From: Mathieu Desnoyers
Date: Fri Oct 31 2025 - 11:14:04 EST
On 2025-10-31 11:06, Thomas Gleixner wrote:
On Thu, Oct 30 2025 at 10:23, Mathieu Desnoyers wrote:
On 2025-10-29 09:09, Thomas Gleixner wrote:
struct mm_mm_cid {
struct mm_cid_pcpu __percpu *pcpu;
+ unsigned int max_cids;
unsigned int nr_cpus_allowed;
+ unsigned int users;
I suspect this reintroduces false-sharing between the "users"
and "lock" fields (updated every time a thread is forked/exits)
and load of the pcpu pointer which is pretty much immutable.
This will slow down accesses to the percpu data in the scheduler
fast path.
At this point yes, but when all bits are in place then the lock fields
end up in a different cache line.
The false sharing issue vs. *pcpu and max_cids is minor, but I can move
the low frequency modified members past the work, so it does not matter
at all. The work stuff is rarely used, so there is no point to worry
about the occasional cache line contention on that.
If we have alignment requirements on fields that matter for performance,
I recommend using __cacheline_group_{begin,end}_aligned() to make this
explicit. See include/linux/cache.h.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com