Re: [patch V3 13/20] sched/mmcid: Provide precomputed maximal value

Thomas Gleixner
2025-10-31T15:06:57Z

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.

Thanks,

tglx