Re: [PATCH 0/4] memcg: cleanup the memcg stats interfaces

From: Qi Zheng

Date: Tue Nov 11 2025 - 03:37:57 EST


Hi Shakeel,

On 11/11/25 7:20 AM, Shakeel Butt wrote:
The memcg stats are safe against irq (and nmi) context and thus does not
require disabling irqs. However for some stats which are also maintained
at node level, it is using irq unsafe interface and thus requiring the
users to still disables irqs or use interfaces which explicitly disables
irqs. Let's move memcg code to use irq safe node level stats function
which is already optimized for architectures with HAVE_CMPXCHG_LOCAL
(all major ones), so there will not be any performance penalty for its
usage.

Generally, places that call __mod_lruvec_state() also call
__mod_zone_page_state(), and it also has the corresponding optimized
version (mod_zone_page_state()). It seems necessary to clean that up
as well, so that those disabling-IRQs that are only used for updating
vmstat can be removed.

Thanks,
Qi


Shakeel Butt (4):
memcg: use mod_node_page_state to update stats
memcg: remove __mod_lruvec_kmem_state
memcg: remove __mod_lruvec_state
memcg: remove __lruvec_stat_mod_folio

include/linux/memcontrol.h | 28 ++++------------------
include/linux/mm_inline.h | 2 +-
include/linux/vmstat.h | 48 ++------------------------------------
mm/filemap.c | 20 ++++++++--------
mm/huge_memory.c | 4 ++--
mm/khugepaged.c | 8 +++----
mm/memcontrol.c | 20 ++++++++--------
mm/migrate.c | 20 ++++++++--------
mm/page-writeback.c | 2 +-
mm/rmap.c | 4 ++--
mm/shmem.c | 6 ++---
mm/vmscan.c | 4 ++--
mm/workingset.c | 2 +-
13 files changed, 53 insertions(+), 115 deletions(-)