linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [QUESTION] What memcg lifetime is required by list_lru_add?
@ 2024-11-27 21:04 Alice Ryhl
  2024-11-27 22:05 ` Dave Chinner
  0 siblings, 1 reply; 4+ messages in thread
From: Alice Ryhl @ 2024-11-27 21:04 UTC (permalink / raw)
  To: Dave Chinner, Johannes Weiner, Andrew Morton, Nhat Pham
  Cc: Qi Zheng, Roman Gushchin, Muchun Song,
	Linux Memory Management List, Michal Hocko, Shakeel Butt,
	cgroups, open list

Dear SHRINKER and MEMCG experts,

When using list_lru_add() and list_lru_del(), it seems to be required
that you pass the same value of nid and memcg to both calls, since
list_lru_del() might otherwise try to delete it from the wrong list /
delete it while holding the wrong spinlock. I'm trying to understand
the implications of this requirement on the lifetime of the memcg.

Now, looking at list_lru_add_obj() I noticed that it uses rcu locking
to keep the memcg object alive for the duration of list_lru_add().
That rcu locking is used here seems to imply that without it, the
memcg could be deallocated during the list_lru_add() call, which is of
course bad. But rcu is not enough on its own to keep the memcg alive
all the way until the list_lru_del_obj() call, so how does it ensure
that the memcg stays valid for that long? And if there is a mechanism
to keep the memcg alive for the entire duration between add and del,
why is rcu locking needed? I don't see any refcounts being taken on
the memcg.

Is it because the memcg could be replaced by another memcg that has
the same value of memcg_kmem_id(memcg)?

tl;dr: what does list_lru_add actually require from the memcg
pointer's lifetime?

Alice


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-03 10:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-27 21:04 [QUESTION] What memcg lifetime is required by list_lru_add? Alice Ryhl
2024-11-27 22:05 ` Dave Chinner
2024-11-28 12:27   ` Alice Ryhl
2024-12-03 10:44   ` Michal Koutný

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox