linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Zi Yan <ziy@nvidia.com>
To: "\"Pankaj Raghav (Samsung)\"" <kernel@pankajraghav.com>
Cc: linux-mm@kvack.org,
	"\"Matthew Wilcox (Oracle)\"" <willy@infradead.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Yang Shi" <shy828301@gmail.com>, "Yu Zhao" <yuzhao@google.com>,
	"\"Kirill A . Shutemov\"" <kirill.shutemov@linux.intel.com>,
	"Ryan Roberts" <ryan.roberts@arm.com>,
	"\"Michal Koutný\"" <mkoutny@suse.com>,
	"Roman Gushchin" <roman.gushchin@linux.dev>,
	"\"Zach O'Keefe\"" <zokeefe@google.com>,
	"Hugh Dickins" <hughd@google.com>,
	"Mcgrof Chamberlain" <mcgrof@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	gost.dev@samsung.com
Subject: Re: [PATCH v4 0/7] Split a folio to any lower order folios
Date: Fri, 16 Feb 2024 10:51:52 -0500	[thread overview]
Message-ID: <B91FE832-74D3-4E47-81E5-7D9415CBA4BF@nvidia.com> (raw)
In-Reply-To: <dvamjmlss62p5pf4das7nu5q35ftf4jlk3viwzyyvzasv4qjns@h3omqs7ecstd>

[-- Attachment #1: Type: text/plain, Size: 3019 bytes --]

On 16 Feb 2024, at 5:06, Pankaj Raghav (Samsung) wrote:

> Hi Zi Yan,
>
> On Tue, Feb 13, 2024 at 04:55:13PM -0500, Zi Yan wrote:
>> From: Zi Yan <ziy@nvidia.com>
>>
>> Hi all,
>>
>> File folio supports any order and multi-size THP is upstreamed[1], so both
>> file and anonymous folios can be >0 order. Currently, split_huge_page()
>> only splits a huge page to order-0 pages, but splitting to orders higher than
>> 0 is going to better utilize large folios. In addition, Large Block
>> Sizes in XFS support would benefit from it[2]. This patchset adds support for
>> splitting a large folio to any lower order folios and uses it during file
>> folio truncate operations.
>
> I added your patches on top of my patches, but removed patch 6 and I
> added this instead:
>
> diff --git a/mm/truncate.c b/mm/truncate.c
> index 725b150e47ac..dd07e2e327a8 100644
> --- a/mm/truncate.c
> +++ b/mm/truncate.c
> @@ -239,7 +239,8 @@ bool truncate_inode_partial_folio(struct folio *folio, loff_t start, loff_t end)
>                 folio_invalidate(folio, offset, length);
>         if (!folio_test_large(folio))
>                 return true;
> -       if (split_folio(folio) == 0)
> +       if (split_folio_to_order(folio,
> +                                mapping_min_folio_order(folio->mapping)) == 0)
>                 return true;
>         if (folio_test_dirty(folio))
>                 return false;
>
> I ran genric/476 fstest[1] with SOAK_DURATION set to 360 seconds. This
> test uses fstress to do a lot of writes, truncate operations, etc. I ran
> this on XFS with **64k block size on a 4k page size system**.
>
> I recorded the vm event for split page and this was the result I got:
>
> Before your patches:
> root@debian:~/xfstests# cat /proc/vmstat  | grep split
> thp_split_page 0
> thp_split_page_failed 5819
>
> After your patches:
> root@debian:~/xfstests# cat /proc/vmstat  | grep split
> thp_split_page 5846
> thp_split_page_failed 20
>
> Your patch series definitely helps with splitting the folios while still
> maintaining the min_folio_order that LBS requires.

Sounds great! Thanks for testing.

>
> We are still discussing how to quantify this benefit in terms of some
> metric with this support. If you have some ideas here, let me know.

From my understanding, the benefit will come from that page cache folio
size is bigger with LBS (plus this patchset) after truncate. I assume any
benchmark testing read/write throughput after truncate operations might
be helpful.

>
> I will run the whole xfstests tonight to check for any regressions.

Can you use the update patches from: https://github.com/x-y-z/linux-1gb-thp/tree/split_thp_to_any_order_v5-mm-everything-2024-02-16-01-35? It contains
changes and fixes based on the feedback from this version. I am planning
to send this new version out soon.

>
> --
> Pankaj
>
> [1] https://github.com/kdave/xfstests/blob/master/tests/generic/476


--
Best Regards,
Yan, Zi

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 854 bytes --]

      reply	other threads:[~2024-02-16 15:52 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13 21:55 [PATCH v4 0/7] Split a folio to any lower order folios Zi Yan
2024-02-13 21:55 ` [PATCH v4 1/7] mm/memcg: use order instead of nr in split_page_memcg() Zi Yan
2024-02-14  9:12   ` David Hildenbrand
2024-02-14 15:19     ` Zi Yan
2024-02-13 21:55 ` [PATCH v4 2/7] mm/page_owner: use order instead of nr in split_page_owner() Zi Yan
2024-02-14  9:14   ` David Hildenbrand
2024-02-14 15:21     ` Zi Yan
2024-02-13 21:55 ` [PATCH v4 3/7] mm: memcg: make memcg huge page split support any order split Zi Yan
2024-02-14  9:19   ` David Hildenbrand
2024-02-13 21:55 ` [PATCH v4 4/7] mm: page_owner: add support for splitting to any order in split page_owner Zi Yan
2024-02-14  9:34   ` David Hildenbrand
2024-02-14 15:29     ` Zi Yan
2024-02-13 21:55 ` [PATCH v4 5/7] mm: thp: split huge page to any lower order pages (except order-1) Zi Yan
2024-02-13 22:05   ` Luis Chamberlain
2024-02-13 22:14     ` David Hildenbrand
2024-02-13 22:15     ` Zi Yan
2024-02-13 22:19       ` Zi Yan
2024-02-14  2:56         ` Zi Yan
2024-02-14 10:38   ` Ryan Roberts
2024-02-14 16:11     ` Zi Yan
2024-02-14 16:22       ` Ryan Roberts
2024-02-14 16:28         ` Zi Yan
2024-02-14 16:41           ` Ryan Roberts
2024-02-13 21:55 ` [PATCH v4 6/7] mm: truncate: split huge page cache page to a non-zero order if possible Zi Yan
2024-02-14 10:43   ` Ryan Roberts
2024-02-14 16:19     ` Zi Yan
2024-02-14 16:25       ` Ryan Roberts
2024-02-13 21:55 ` [PATCH v4 7/7] mm: huge_memory: enable debugfs to split huge pages to any order Zi Yan
2024-02-13 22:21 ` [PATCH v4 0/7] Split a folio to any lower order folios David Hildenbrand
2024-02-13 22:31   ` Zi Yan
2024-02-14 10:50     ` Ryan Roberts
2024-02-14 10:55       ` David Hildenbrand
2024-02-14 16:35         ` Zi Yan
2024-02-14 17:18 ` Zi Yan
2024-02-14 17:38   ` Pankaj Raghav (Samsung)
2024-02-16 10:06 ` Pankaj Raghav (Samsung)
2024-02-16 15:51   ` Zi Yan [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=B91FE832-74D3-4E47-81E5-7D9415CBA4BF@nvidia.com \
    --to=ziy@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=david@redhat.com \
    --cc=gost.dev@samsung.com \
    --cc=hughd@google.com \
    --cc=kernel@pankajraghav.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mcgrof@kernel.org \
    --cc=mkoutny@suse.com \
    --cc=roman.gushchin@linux.dev \
    --cc=ryan.roberts@arm.com \
    --cc=shy828301@gmail.com \
    --cc=willy@infradead.org \
    --cc=yuzhao@google.com \
    --cc=zokeefe@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;
as well as URLs for NNTP newsgroup(s).