linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Hugh Dickins <hughd@google.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	 Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: hughd@google.com, willy@infradead.org, david@redhat.com,
	 wangkefeng.wang@huawei.com, chrisl@kernel.org,
	ying.huang@intel.com,  21cnbao@gmail.com, ryan.roberts@arm.com,
	shy828301@gmail.com,  ziy@nvidia.com, ioworker0@gmail.com,
	da.gomez@samsung.com,  p.raghav@samsung.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/9] support large folio swap-out and swap-in for shmem
Date: Wed, 19 Jun 2024 01:16:42 -0700 (PDT)	[thread overview]
Message-ID: <2683b71d-aebd-5527-348c-18c0e021b653@google.com> (raw)
In-Reply-To: <475f0f2c-afc7-4225-809f-93c93f45c830@linux.alibaba.com>

On Wed, 19 Jun 2024, Baolin Wang wrote:
> On 2024/6/19 04:05, Andrew Morton wrote:
> > On Tue, 18 Jun 2024 14:54:12 +0800 Baolin Wang
> > <baolin.wang@linux.alibaba.com> wrote:
> > 
> >> Shmem will support large folio allocation [1] [2] to get a better
> >> performance,
> >> however, the memory reclaim still splits the precious large folios when
> >> trying
> >> to swap-out shmem, which may lead to the memory fragmentation issue and can
> >> not
> >> take advantage of the large folio for shmeme.
> >>
> >> Moreover, the swap code already supports for swapping out large folio
> >> without
> >> split, and large folio swap-in[3] series is queued into mm-unstable branch.
> >> Hence this patch set also supports the large folio swap-out and swap-in for
> >> shmem.
> > 
> > I'll add this to mm-unstable for some exposure, but I wonder how much
> > testing it will have recieved by the time the next merge window opens?
> 
> Thanks Andrew. I am fine with this series going to 6.12 if you are concerned
> about insufficient testing (and let's also wait for Hugh's comments). Since we
> (Daniel and I) have some follow-up patches that will rely on this swap series,
> hope this series can be tested as extensively as possible to ensure its
> stability in the mm branch.

Thanks for giving it the exposure, Andrew, but please drop it from
mm-unstable until the next cycle. I'd been about to write to say I
wouldn't be trying it until next cycle, when your mm-commits came in:
so I thought I ought at least to give mm-everything-2024-06-18 a try.

Baolin may have fixed stuff, but he (or the interaction with other mm
work) has broken stuff too: I couldn't get as far with it as with the
previous version. Just "cp -a" of a kernel source tree into a tmpfs
huge=always size=<bigenough> failed with lots of ENOSPCs, and when
"rm -rf"ed lots of WARN_ON(inode->i_blocks) from shmem_evict_inode();
and on second attempt, then a VM_BUG_ON_FOLIO(!folio_contains) from
find_lock_entries().

Or maybe that VM_BUG_ON_FOLIO() was unrelated, but a symptom of the bug
I'm trying to chase even when this series is reverted: some kind of page
double usage, manifesting as miscellaneous "Bad page"s and VM_BUG_ONs,
mostly from page reclaim or from exit_mmap(). I'm still getting a feel
for it, maybe it occurs soon enough for a reliable bisection, maybe not.

(While writing, a run with mm-unstable cut off at 2a9964cc5d27,
drop KSM_KMEM_CACHE(), instead of reverting just Baolin's latest,
has not yet hit any problem: too early to tell but promising.)

And before 2024-06-18, I was working on mm-everything-2024-06-15 minus
Chris Li's mTHP swap series: which worked fairly well, until it locked
up with __try_to_reclaim_swap()'s filemap_get_folio() spinning around
on a page with 0 refcount, while a page table lock is held which one
by one the other CPUs come to want for reclaim. On two machines.

None of these problems seen on Stephen's last next-2024-06-13.
I had wanted to see if mm-everything-2024-06-18 fixed that lockup,
but with the new problems I cannot tell (or it could all be the same
problem: but if so, odd that it manifests consistently differently).

There are way too many mTHP shmem and swap patch series floating
around at the moment, in mm and in fs, for me to cope with:
everyone, please slow down and test more.

Hugh

p.s. I think Andrew Bresticker's do_set_pmd() fix has soaked
long enough, and deserves promotion to hotfix and Linus soon.


  reply	other threads:[~2024-06-19  8:17 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-18  6:54 Baolin Wang
2024-06-18  6:54 ` [PATCH v2 1/9] mm: vmscan: add validation before spliting shmem large folio Baolin Wang
2024-06-20  6:12   ` Yu Zhao
2024-06-20  8:26     ` Baolin Wang
2024-06-18  6:54 ` [PATCH v2 2/9] mm: swap: extend swap_shmem_alloc() to support batch SWAP_MAP_SHMEM flag setting Baolin Wang
2024-06-18  6:54 ` [PATCH v2 3/9] mm: shmem: extend shmem_partial_swap_usage() to support large folio swap Baolin Wang
2024-06-18  6:54 ` [PATCH v2 4/9] mm: shmem: return number of pages beeing freed in shmem_free_swap Baolin Wang
2024-06-18  6:54 ` [PATCH v2 5/9] mm: filemap: use xa_get_order() to get the swap entry order Baolin Wang
2024-06-18  6:54 ` [PATCH v2 6/9] mm: shmem: use swap_free_nr() to free shmem swap entries Baolin Wang
2024-06-18  6:54 ` [PATCH v2 7/9] mm: shmem: support large folio allocation for shmem_replace_folio() Baolin Wang
2024-06-18  6:54 ` [PATCH v2 8/9] mm: shmem: drop folio reference count using 'nr_pages' in shmem_delete_from_page_cache() Baolin Wang
2024-06-18  6:54 ` [PATCH v2 9/9] mm: shmem: support large folio swap out Baolin Wang
2024-06-18 20:05 ` [PATCH v2 0/9] support large folio swap-out and swap-in for shmem Andrew Morton
2024-06-19  1:28   ` Baolin Wang
2024-06-19  8:16     ` Hugh Dickins [this message]
2024-06-19  8:58       ` Baolin Wang
2024-06-20  1:33       ` Andrew Morton
2024-06-20  3:59         ` Hugh Dickins
2024-06-20  6:41           ` David Hildenbrand
2024-06-20  4:42       ` Hugh Dickins
2024-06-20  6:52         ` David Hildenbrand
2024-06-20 16:27           ` Hugh Dickins
2024-06-20 16:51             ` David Hildenbrand
2024-06-25  4:54         ` Hugh Dickins

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=2683b71d-aebd-5527-348c-18c0e021b653@google.com \
    --to=hughd@google.com \
    --cc=21cnbao@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=chrisl@kernel.org \
    --cc=da.gomez@samsung.com \
    --cc=david@redhat.com \
    --cc=ioworker0@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=p.raghav@samsung.com \
    --cc=ryan.roberts@arm.com \
    --cc=shy828301@gmail.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=willy@infradead.org \
    --cc=ying.huang@intel.com \
    --cc=ziy@nvidia.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