All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Barry Song <baohua@kernel.org>
Cc: Kairui Song <ryncsn@gmail.com>,
	akpm@linux-foundation.org, linux-mm@kvack.org,
	baoquan.he@linux.dev, chrisl@kernel.org, jp.kobryn@linux.dev,
	kasong@tencent.com, liam@infradead.org,
	linux-kernel@vger.kernel.org, ljs@kernel.org, mhocko@suse.com,
	nphamcs@gmail.com, rppt@kernel.org, shakeel.butt@linux.dev,
	shikemeng@huaweicloud.com, surenb@google.com,
	usama.arif@linux.dev, vbabka@kernel.org, youngjun.park@lge.com
Subject: Re: [PATCH v2 4/4] mm: try to free swapcache for non-LRU folios
Date: Wed, 1 Jul 2026 22:09:04 +0200	[thread overview]
Message-ID: <22f9bdf3-576e-4146-89c7-64960207c5d2@kernel.org> (raw)
In-Reply-To: <CAGsJ_4yE-U5ox5y+brDBxEoc2uympQ7JBRqgD5OsqqX-u_6t=w@mail.gmail.com>

On 7/1/26 11:50, Barry Song wrote:
> On Wed, Jul 1, 2026 at 4:18 PM David Hildenbrand (Arm) <david@kernel.org> wrote:
> [...]
>>>
>>> The newly allocated folio will likely still be sitting in this
>>> CPU's local LRU cache. If we drop the drain in patch 1, it seems
>>> there is little point in calling do_wp_page() from
>>> do_swap_page(), since we won't be able to reuse the folio while
>>> it remains in the local LRU cache.
>>
>> Well, we call do_wp_page() here to avoid another page fault where we would end
>> up in do_wp_page() and actually break COW.
> 
> Yep. We still need do_wp_page() to handle CoW, but we could
> actually reuse the folio if we don't drop the LRU drain.
> 
>>
>>>
>>> So I'm wondering whether we should keep the drain in
>>> patch 1 by checking for a refcount of 3, or instead do
>>> something like the following in patch 4:
>>>
>>>
>>>         if ((vmf->flags & FAULT_FLAG_WRITE) && !pte_write(pte)) {
>>>                  lru_add_drain();
>>>                  ret |= do_wp_page(vmf);
>>>                  if (ret & VM_FAULT_ERROR)
>>>                          ret &= VM_FAULT_ERROR;
>>>        }
>>>
>>> Otherwise, the combination of patches 1 and 4 seems somewhat
>>> inconsistent. It feels like a strange mix of sweet, spicy,
>>> hot, and cold—kind of contradictory :-)
>>
>> Yes, this needs a proper thought.
>>
>> What you describe is relevant for
>>
>> e.g.,
>>
>> swapout
>> fork -> exclusive bit cleared
>> child exit -> parent is single user
>> swapin -> added to swapcache and LRU cache
>>
>>
>> This is not very odd, so we should keep that working (I think I have
>> micro-benchmarks for that).
> 
> Maybe the simplest approach is to keep the drain in patch 1 and
> just make the code improvements you suggested in [1]?

Yeah, probably best for that scenario.

-- 
Cheers,

David


      reply	other threads:[~2026-07-01 20:09 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-23 23:16 [PATCH v2 0/4] mm: drop redundant lru_add_drain in anon folio reuse paths Barry Song (Xiaomi)
2026-06-23 23:16 ` [PATCH v2 1/4] mm: avoid unnecessary lru drain for wp_can_reuse_anon_folio() Barry Song (Xiaomi)
2026-06-24 10:14   ` Kairui Song
2026-06-24 15:02   ` David Hildenbrand (Arm)
2026-06-24 21:04     ` Barry Song
2026-06-26 16:25       ` David Hildenbrand (Arm)
2026-06-27  2:44         ` Shakeel Butt
2026-06-27  7:20           ` Barry Song
2026-06-29  7:52             ` David Hildenbrand (Arm)
2026-06-29 23:16               ` Barry Song
2026-06-30  5:38                 ` David Hildenbrand (Arm)
2026-06-23 23:16 ` [PATCH v2 2/4] mm: drop stale folio_ref_count()==1 check in do_swap_page reuse logic Barry Song (Xiaomi)
2026-06-24 15:07   ` David Hildenbrand (Arm)
2026-06-24 21:29     ` Barry Song
2026-06-23 23:16 ` [PATCH v2 3/4] mm: entirely remove lru_add_drain in do_swap_page Barry Song (Xiaomi)
2026-06-24 10:16   ` Kairui Song
2026-06-24 15:10   ` David Hildenbrand (Arm)
2026-06-23 23:16 ` [PATCH v2 4/4] mm: try to free swapcache for non-LRU folios Barry Song (Xiaomi)
2026-06-24 15:20   ` David Hildenbrand (Arm)
2026-06-24 21:14     ` Barry Song
2026-06-25 14:40       ` Kairui Song
2026-06-26 16:35         ` David Hildenbrand (Arm)
2026-06-29 23:59           ` Barry Song
2026-06-30  5:48             ` David Hildenbrand (Arm)
2026-06-30 22:36               ` Barry Song
2026-07-01  8:18                 ` David Hildenbrand (Arm)
2026-07-01  9:50                   ` Barry Song
2026-07-01 20:09                     ` David Hildenbrand (Arm) [this message]

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=22f9bdf3-576e-4146-89c7-64960207c5d2@kernel.org \
    --to=david@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baoquan.he@linux.dev \
    --cc=chrisl@kernel.org \
    --cc=jp.kobryn@linux.dev \
    --cc=kasong@tencent.com \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=nphamcs@gmail.com \
    --cc=rppt@kernel.org \
    --cc=ryncsn@gmail.com \
    --cc=shakeel.butt@linux.dev \
    --cc=shikemeng@huaweicloud.com \
    --cc=surenb@google.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=youngjun.park@lge.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 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.