linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Kinsey Ho <kinseyho@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Yosry Ahmed <yosryahmed@google.com>,
	Roman Gushchin <roman.gushchin@linux.dev>
Subject: Re: [PATCH mm-unstable v1 1/4] mm: don't hold css->refcnt during traversal
Date: Thu, 25 Jul 2024 16:43:46 -0400	[thread overview]
Message-ID: <20240725204346.GA1702603@cmpxchg.org> (raw)
In-Reply-To: <20240724190214.1108049-2-kinseyho@google.com>

On Wed, Jul 24, 2024 at 07:02:11PM +0000, Kinsey Ho wrote:
> To obtain the pointer to the saved memcg position, mem_cgroup_iter()
> currently holds css->refcnt during memcg traversal only to put
> css->refcnt at the end of the routine. This isn't necessary as an
> rcu_read_lock is already held throughout the function.
> 
> Remove css->refcnt usage during traversal by leveraging RCU.

Eh, I don't know about this.

RCU ensures that the css memory isn't freed.

The tryget ensures that the css is still alive and valid.

In this case, it just so happens that the sibling linkage is also rcu
protected. But accessing random css members when the refcount is 0 is
kind of sketchy. On the other hand, the refcount is guaranteed to be
valid, and rcu + tryget is a common pattern.

What does this buy us? The tryget is cheap.


  parent reply	other threads:[~2024-07-25 20:43 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-24 19:02 [PATCH mm-unstable v1 0/4] Improve mem_cgroup_iter() Kinsey Ho
2024-07-24 19:02 ` [PATCH mm-unstable v1 1/4] mm: don't hold css->refcnt during traversal Kinsey Ho
2024-07-25 16:33   ` kernel test robot
2024-07-25 20:43   ` Johannes Weiner [this message]
2024-07-25 21:09     ` Roman Gushchin
2024-07-25 22:33     ` Yosry Ahmed
2024-08-01 21:46       ` Kinsey Ho
2024-08-01 22:32       ` Kinsey Ho
2024-08-02  1:28         ` Johannes Weiner
2024-07-24 19:02 ` [PATCH mm-unstable v1 2/4] mm: increment gen # before restarting traversal Kinsey Ho
2024-07-25 20:53   ` Johannes Weiner
2024-07-24 19:02 ` [PATCH mm-unstable v1 3/4] mm: restart if multiple traversals raced Kinsey Ho
2024-07-24 19:02 ` [PATCH mm-unstable v1 4/4] mm: clean up mem_cgroup_iter() Kinsey Ho
2024-07-25 18:15   ` kernel test robot
2024-07-25  0:25 ` [PATCH mm-unstable v1 0/4] Improve mem_cgroup_iter() Roman Gushchin

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=20240725204346.GA1702603@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=kinseyho@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=roman.gushchin@linux.dev \
    --cc=yosryahmed@google.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox