lkml.org 
[lkml]   [2024]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH v4 0/7] Split a folio to any lower order folios
    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.

    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.

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

    --
    Pankaj

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

    \
     
     \ /
      Last update: 2024-05-27 15:06    [W:4.215 / U:0.548 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site