Re: [PATCH v3 28/30 fix 1/2] mm: memcontrol: fix lruvec_stats->state_local reparenting

From: Qi Zheng

Date: Wed Jan 21 2026 - 06:46:53 EST




On 1/21/26 4:20 PM, Shakeel Butt wrote:
On Wed, Jan 21, 2026 at 11:43:50AM +0800, Qi Zheng wrote:


On 1/21/26 2:47 AM, Shakeel Butt wrote:
On Tue, Jan 20, 2026 at 03:19:00PM +0800, Muchun Song wrote:


No reparenting local stats for v2.

It seems that lruvec_stats->state_local (non-hierarchical) needs to be
relocated in both v1 and v2.

Here we might need to elaborate a bit. Specifically, in the function
`count_shadow_nodes`, the use of `lruvec_page_state_local` to obtain
LRU and SLAB pages seems to also require these logics to work correctly.
For SLAB, it appears that the statistics here have already been
problematic for a while since SLAB pages have been reparented, right?


Thanks a lot, now it is clear and yes it seems like SLAB is problematic
but now I am wondering if it is really worth fixing. For LRU pages, how
about using lruvec_lru_size() defined in vmscan.c. That would at least
keep count_shadow_nodes() working irrespective of LRU reparenting.

Do you mean calling lruvec_lru_size() in count_shadow_nodes()?

Yes but I am mainly brainstorming. We can keep the reparenting local

OK, I will take a closer look.

stats for both v1 and v2 for now as it is not a performance critical
path. I am more worried about the stats update path where upward
traversal of memcg for CSS_DYING can be costly and I don't want that in
v2.

But
numa_stat interface also reads lruvec_stats->state and make it visible
to the user.


Not sure how this is relevant.

My mistake, please ignore it.

Thanks!