Re: [linus:master] [mm] 01b9da291c: stress-ng.switch.ops_per_sec 67.7% regression
From: Qi Zheng
Date: Tue May 12 2026 - 22:12:02 EST
On 5/13/26 12:03 AM, Shakeel Butt wrote:
On Tue, May 12, 2026 at 08:56:52PM +0800, kernel test robot wrote:
Hello,
kernel test robot noticed a 67.7% regression of stress-ng.switch.ops_per_sec on:
commit: 01b9da291c4969354807b52956f4aae1f41b4924 ("mm: memcontrol: convert objcg to be per-memcg per-node type")
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
This is most probably due to shuffling of struct mem_cgroup and struct
mem_cgroup_per_node members.
Another possibility is that after objcg was split into per-node, the
slab accounting fast path is still designed assuming only one current
objcg per CPU:
struct obj_stock_pcp {
struct obj_cgroup *cached_objcg;
};
So it's may cause the following thrashing:
CPU stock cached = memcg/node0 objcg
free object tagged = memcg/node1 objcg
=> __refill_obj_stock --> objcg mismatch
=> drain_obj_stock()
=> cache switches to node1 objcg
next local allocation tagged = node0 objcg
=> mismatch again
=> drain_obj_stock()
I will try to reproduce and will followup on this.
Thanks! I'll also try to reproduce it locally and work on a fix.