From: Shakeel Butt <shakeel.butt@linux.dev>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Muchun Song <muchun.song@linux.dev>,
Vlastimil Babka <vbabka@suse.cz>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org,
Meta kernel team <kernel-team@meta.com>
Subject: [RFC PATCH 07/10] memcg: use __mod_memcg_state in drain_obj_stock
Date: Thu, 13 Mar 2025 23:15:08 -0700 [thread overview]
Message-ID: <20250314061511.1308152-8-shakeel.butt@linux.dev> (raw)
In-Reply-To: <20250314061511.1308152-1-shakeel.butt@linux.dev>
For non-PREEMPT_RT kernels, drain_obj_stock() is always called with irq
disabled, so we can use __mod_memcg_state() instead of
mod_memcg_state(). For PREEMPT_RT, we need to add memcg_stats_[un]lock
in __mod_memcg_state().
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
---
mm/memcontrol.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3c4de384b5a0..dfe9c2eb7816 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -707,10 +707,12 @@ void __mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
return;
+ memcg_stats_lock();
__this_cpu_add(memcg->vmstats_percpu->state[i], val);
val = memcg_state_val_in_pages(idx, val);
memcg_rstat_updated(memcg, val);
trace_mod_memcg_state(memcg, idx, val);
+ memcg_stats_unlock();
}
#ifdef CONFIG_MEMCG_V1
@@ -2845,7 +2847,7 @@ static void drain_obj_stock(struct memcg_stock_pcp *stock)
memcg = get_mem_cgroup_from_objcg(old);
- mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages);
+ __mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages);
memcg1_account_kmem(memcg, -nr_pages);
if (!mem_cgroup_is_root(memcg))
memcg_uncharge(memcg, nr_pages);
--
2.47.1
next prev parent reply other threads:[~2025-03-14 6:15 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-14 6:15 [RFC PATCH 00/10] memcg: stock code cleanups Shakeel Butt
2025-03-14 6:15 ` [RFC PATCH 01/10] memcg: remove root memcg check from refill_stock Shakeel Butt
2025-03-14 6:15 ` [RFC PATCH 02/10] memcg: decouple drain_obj_stock from local stock Shakeel Butt
2025-03-14 9:57 ` Vlastimil Babka
2025-03-14 6:15 ` [RFC PATCH 03/10] memcg: introduce memcg_uncharge Shakeel Butt
2025-03-14 10:01 ` Vlastimil Babka
2025-03-14 6:15 ` [RFC PATCH 04/10] memcg: manually inline __refill_stock Shakeel Butt
2025-03-14 10:05 ` Vlastimil Babka
2025-03-14 6:15 ` [RFC PATCH 05/10] memcg: no refilling stock from obj_cgroup_release Shakeel Butt
2025-03-14 10:09 ` Vlastimil Babka
2025-03-14 11:26 ` Sebastian Andrzej Siewior
2025-03-14 15:25 ` Shakeel Butt
2025-03-14 6:15 ` [RFC PATCH 06/10] memcg: do obj_cgroup_put inside drain_obj_stock Shakeel Butt
2025-03-14 10:17 ` Vlastimil Babka
2025-03-14 11:35 ` Sebastian Andrzej Siewior
2025-03-14 15:29 ` Shakeel Butt
2025-03-14 6:15 ` Shakeel Butt [this message]
2025-03-14 10:27 ` [RFC PATCH 07/10] memcg: use __mod_memcg_state in drain_obj_stock Vlastimil Babka
2025-03-14 11:44 ` Sebastian Andrzej Siewior
2025-03-14 11:38 ` Sebastian Andrzej Siewior
2025-03-14 6:15 ` [RFC PATCH 08/10] memcg: assert in_task for couple of local_lock holders Shakeel Butt
2025-03-14 6:15 ` [RFC PATCH 09/10] memcg: trylock stock for objcg Shakeel Butt
2025-03-14 11:47 ` Sebastian Andrzej Siewior
2025-03-14 15:33 ` Shakeel Butt
2025-03-14 6:15 ` [RFC PATCH 10/10] memcg: no more irq disabling for stock locks Shakeel Butt
2025-03-14 10:54 ` Vlastimil Babka
2025-03-14 11:58 ` Sebastian Andrzej Siewior
2025-03-14 15:55 ` Shakeel Butt
2025-03-14 16:42 ` Sebastian Andrzej Siewior
2025-03-14 17:02 ` Shakeel Butt
2025-03-14 17:38 ` Shakeel Butt
2025-03-14 18:19 ` Sebastian Andrzej Siewior
2025-03-14 13:33 ` [RFC PATCH 00/10] memcg: stock code cleanups Vlastimil Babka
2025-03-14 16:03 ` Shakeel Butt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250314061511.1308152-8-shakeel.butt@linux.dev \
--to=shakeel.butt@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.