From: Wang Yugui <wangyugui@e16-tech.com>
To: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Cc: linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org,
Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@infradead.org>,
"Darrick J . Wong" <djwong@kernel.org>
Subject: Re: [PATCH v3 0/8] Create large folios in iomap buffered write path
Date: Wed, 21 Jun 2023 20:03:13 +0800 [thread overview]
Message-ID: <20230621200305.23CB.409509F4@e16-tech.com> (raw)
In-Reply-To: <20230612203910.724378-1-willy@infradead.org>
Hi,
> Commit ebb7fb1557b1 limited the length of ioend chains to 4096 entries
> to improve worst-case latency. Unfortunately, this had the effect of
> limiting the performance of:
>
> fio -name write-bandwidth -rw=write -bs=1024Ki -size=32Gi -runtime=30 \
> -iodepth 1 -ioengine sync -zero_buffers=1 -direct=0 -end_fsync=1 \
> -numjobs=4 -directory=/mnt/test
>
> The problem ends up being lock contention on the i_pages spinlock as we
> clear the writeback bit on each folio (and propagate that up through
> the tree). By using larger folios, we decrease the number of folios
> to be processed by a factor of 256 for this benchmark, eliminating the
> lock contention.
>
> It's also the right thing to do. This is a project that has been on
> the back burner for years, it just hasn't been important enough to do
> before now.
>
> I think it's probably best if this goes through the iomap tree since
> the changes outside iomap are either to the page cache or they're
> trivial.
>
> v3:
> - Fix the handling of compound highmem pages in copy_page_from_iter_atomic()
> - Rename fgp_t to fgf_t
> - Clarify some wording in the documentation
This v3 patches broken linux 6.4-rc7.
fstests(btrfs/007 and more) will fail with the v3 patches .
but it works well without the v3 patches.
Best Regards
Wang Yugui (wangyugui@e16-tech.com)
2023/06/21
> v2:
> - Fix misplaced semicolon
> - Rename fgp_order to fgp_set_order
> - Rename FGP_ORDER to FGP_GET_ORDER
> - Add fgp_t
> - Update the documentation for ->release_folio
> - Fix iomap_invalidate_folio()
> - Update iomap_release_folio()
>
> Matthew Wilcox (Oracle) (8):
> iov_iter: Handle compound highmem pages in
> copy_page_from_iter_atomic()
> iomap: Remove large folio handling in iomap_invalidate_folio()
> doc: Correct the description of ->release_folio
> iomap: Remove unnecessary test from iomap_release_folio()
> filemap: Add fgf_t typedef
> filemap: Allow __filemap_get_folio to allocate large folios
> iomap: Create large folios in the buffered write path
> iomap: Copy larger chunks from userspace
>
> Documentation/filesystems/locking.rst | 15 ++++--
> fs/btrfs/file.c | 6 +--
> fs/f2fs/compress.c | 2 +-
> fs/f2fs/f2fs.h | 2 +-
> fs/gfs2/bmap.c | 2 +-
> fs/iomap/buffered-io.c | 43 ++++++++--------
> include/linux/iomap.h | 2 +-
> include/linux/pagemap.h | 71 ++++++++++++++++++++++-----
> lib/iov_iter.c | 43 ++++++++++------
> mm/filemap.c | 61 ++++++++++++-----------
> mm/folio-compat.c | 2 +-
> mm/readahead.c | 13 -----
> 12 files changed, 159 insertions(+), 103 deletions(-)
>
> --
> 2.39.2
next prev parent reply other threads:[~2023-06-21 12:03 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-12 20:39 [PATCH v3 0/8] Create large folios in iomap buffered write path Matthew Wilcox (Oracle)
2023-06-12 20:39 ` [PATCH v3 1/8] iov_iter: Handle compound highmem pages in copy_page_from_iter_atomic() Matthew Wilcox (Oracle)
2023-06-13 4:52 ` Christoph Hellwig
2023-07-10 3:36 ` Matthew Wilcox
2023-06-12 20:39 ` [PATCH v3 2/8] iomap: Remove large folio handling in iomap_invalidate_folio() Matthew Wilcox (Oracle)
2023-06-12 20:39 ` [PATCH v3 3/8] doc: Correct the description of ->release_folio Matthew Wilcox (Oracle)
2023-06-13 4:53 ` Christoph Hellwig
2023-06-12 20:39 ` [PATCH v3 4/8] iomap: Remove unnecessary test from iomap_release_folio() Matthew Wilcox (Oracle)
2023-06-13 4:53 ` Christoph Hellwig
2023-06-13 16:19 ` Matthew Wilcox
2023-06-12 20:39 ` [PATCH v3 5/8] filemap: Add fgf_t typedef Matthew Wilcox (Oracle)
2023-06-13 4:53 ` Christoph Hellwig
2023-06-12 20:39 ` [PATCH v3 6/8] filemap: Allow __filemap_get_folio to allocate large folios Matthew Wilcox (Oracle)
2023-06-12 22:49 ` Dave Chinner
2023-06-13 0:42 ` Matthew Wilcox
2023-06-13 1:30 ` Dave Chinner
2023-06-13 2:00 ` Matthew Wilcox
2023-06-13 7:54 ` Dave Chinner
2023-06-13 13:34 ` Matthew Wilcox
2023-06-16 17:45 ` Matthew Wilcox
2023-06-16 22:40 ` Dave Chinner
2023-06-13 4:56 ` Christoph Hellwig
2023-06-12 20:39 ` [PATCH v3 7/8] iomap: Create large folios in the buffered write path Matthew Wilcox (Oracle)
2023-06-13 4:56 ` Christoph Hellwig
2023-06-12 20:39 ` [PATCH v3 8/8] iomap: Copy larger chunks from userspace Matthew Wilcox (Oracle)
2023-06-13 4:58 ` Christoph Hellwig
2023-06-13 19:43 ` Matthew Wilcox
2023-07-10 3:45 ` Matthew Wilcox
2023-06-17 7:13 ` Ritesh Harjani
2023-06-19 17:09 ` Matthew Wilcox
2023-07-10 3:57 ` Matthew Wilcox
2023-06-21 12:03 ` Wang Yugui [this message]
2023-07-10 3:55 ` [PATCH v3 0/8] Create large folios in iomap buffered write path Matthew Wilcox
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=20230621200305.23CB.409509F4@e16-tech.com \
--to=wangyugui@e16-tech.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=willy@infradead.org \
/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.