Re: [PATCH] mm/memcontrol: avoid false sharing between vmstats and events
From: Andrew Morton
Date: Mon Aug 17 2026 - 14:00:30 EST
On Mon, 17 Aug 2026 03:38:35 -0700 Usama Arif <usama.arif@xxxxxxxxx> wrote:
> Moving v1 userspace eventfd handling into memcontrol-v1.c shrank
> struct vmpressure from 112 to 24 bytes when CONFIG_MEMCG_V1 is disabled.
> This moved memory_events_local[MEMCG_SWAP_FAIL] and the hot
> vmstats_percpu pointer onto the same cacheline.
>
> The stress-ng mremap stressor exercises MADV_PAGEOUT with swap
> disabled, generating about 20 million MEMCG_SWAP_FAIL updates per
> 60-second run on a 176-CPU test system. Those writes bounce the line
> while memcg statistics paths load vmstats_percpu.
>
> Move cgwb_list into the existing alignment gap and cacheline-align
> vmstats_percpu. This separates the pointer from the event counters
> without increasing the size of struct mem_cgroup in the tested
> configuration.
>
> The blamed commit reduced median mremap throughput by 4.38% on the
> test system with one socket. The patched kernel brings the performance
> to within 0.5% of the parent which is within the observed boot-to-boot
> spread (up to 1.2%).
Cool, thanks.
> Fixes: ea928e9e18da ("mm/vmpressure: move v1 userspace eventfd code into memcontrol-v1.c")
That's in mm-stable so I'll squeeze this fix into next week's 7.3-rc1
merge pile.