Re: [linux-next:master] [mm/vmpressure] ea928e9e18: stress-ng.mremap.ops_per_sec 36.2% regression

Shakeel Butt <[email protected]>
Newsgroups dev.linux.lists.oe-lkp,org.kernel.vger.cgroups,org.kvack.linux-mm
Message-ID <[email protected]>
On Thu, Aug 13, 2026 at 09:16:22PM +0800, kernel test robot wrote:
> 
> 
> Hello,
> 
> kernel test robot noticed a 36.2% regression of stress-ng.mremap.ops_per_sec on:
> 
> commit: ea928e9e18da682e9a5bc40aa862bff7ce5ae42e ("mm/vmpressure: move v1 userspace eventfd code into memcontrol-v1.c") https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master
> 
> in testcase: stress-ng
> version: stress-ng-x86_64-29ce10a2c-1_20260712
> with following parameters:
> 
> 	nr_threads: 100%
> 	testtime: 60s
> 	test: mremap
> 	cpufreq_governor: performance
> 
> 
> 
> config: x86_64-rhel-9.4 (CONFIG_MEMCG=y and CONFIG_MEMCG_V1 is not set)
> compiler: gcc-14
> test machine: 256 threads 4 sockets INTEL(R) XEON(R) PLATINUM 8592+ (Emerald Rapids) with 256G memory
> 
> (please refer to attached dmesg/kmsg for entire log/backtrace)
> 

Hi there,

Can you please test the following patch and see if it fixes the regression?


From 84c0b05b3bc5cf73ee66ead75aafb1ad684462c3 Mon Sep 17 00:00:00 2001
From: Shakeel Butt <[email protected]>
Date: Thu, 13 Aug 2026 09:38:28 -0700
Subject: [PATCH] memcg: keep vmstats_percpu off the memory_events[] cacheline

Signed-off-by: Shakeel Butt <[email protected]>
---
 include/linux/memcontrol.h | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index e78bc98ab229..e25d5b9a1db8 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -246,8 +246,13 @@ struct mem_cgroup {
 	/* handle for "memory.swap.events" */
 	struct cgroup_file swap_events_file;
 
-	/* memory.stat */
+	/* Read-mostly. */
 	struct memcg_vmstats	*vmstats;
+	struct memcg_vmstats_percpu __percpu *vmstats_percpu;
+	int			kmemcg_id;
+
+	/* Write-hot from here on; do not let it share with the above. */
+	CACHELINE_PADDING(_pad_);
 
 	/* memory.events */
 	atomic_long_t		memory_events[MEMCG_NR_MEMORY_EVENTS];
@@ -266,9 +271,6 @@ struct mem_cgroup {
 #if BITS_PER_LONG < 64
 	seqlock_t		socket_pressure_seqlock;
 #endif
-	int kmemcg_id;
-
-	struct memcg_vmstats_percpu __percpu *vmstats_percpu;
 
 #ifdef CONFIG_CGROUP_WRITEBACK
 	struct list_head cgwb_list;
-- 
2.53.0-Meta
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.