All of lore.kernel.org
 help / color / mirror / Atom feed
From: Horst Birthelmer <horst@birthelmer.de>
To: Joanne Koong <joannelkoong@gmail.com>
Cc: miklos@szeredi.hu, jefflexu@linux.alibaba.com,
	 fuse-devel@lists.linux.dev
Subject: Re: Re: [PATCH v1] fuse: enable large folios
Date: Thu, 25 Jun 2026 09:17:12 +0200	[thread overview]
Message-ID: <ajzTpMB0BZ4TY0Np@fedora.fritz.box> (raw)
In-Reply-To: <CAJnrk1aSaD3Ur3oHdsfdGw1-OSoNZjrVVXz9eB0ZFDrHBR0ssA@mail.gmail.com>

On Wed, Jun 24, 2026 at 10:52:11AM -0700, Joanne Koong wrote:
> On Tue, Jun 23, 2026 at 11:16 PM Horst Birthelmer <horst@birthelmer.de> wrote:
> >
> > On Tue, Jun 23, 2026 at 06:21:32PM -0700, Joanne Koong wrote:
> > > Enable large folios, capping the max order at the largest request fuse
> > > can issue, so a folio always fits within a single request. The order
> > > range minimum is 0, so under memory pressure the allocator falls back to
> > > smaller folios.
> > >
> > > Benchmarks (libfuse passthrough_hp, buffered fio, single job, 4 GiB
> > > file, medians, NUMA-pinned, performance governor, strictlimiting on by
> > > default):
> > >
> > > tmpfs backing (page-cache bound):
> > >   workload          bs      large folios off   on        delta
> > >   seq read,  cold,  128k    3110 MiB/s    4514 MiB/s     +45%
> > >   seq read,  cold,  1M      3079 MiB/s    5181 MiB/s     +68%
> > >   seq read,  warm,  128k    2438 MiB/s    4486 MiB/s     +84%
> > >   seq read,  warm,  1M      2403 MiB/s    5123 MiB/s    +113%
> > >   writeback write, seq,128k 1211 MiB/s    1699 MiB/s     +40%
> > >   writeback write, seq, 1M  1462 MiB/s    2208 MiB/s     +51%
> > >   writeback write, rand,128k 1101 MiB/s   1757 MiB/s     +60% +
> > >   writeback write, rand, 1M 1284 MiB/s    2228 MiB/s     +74% +
> > >
> > > xfs on NVMe backing (device bound for cold I/O):
> > >   workload          bs      large folios off   on        delta
> > >   seq read,  cold,  128k    2030 MiB/s    2172 MiB/s      +7% *
> > >   seq read,  cold,  1M      1999 MiB/s    2181 MiB/s      +9% *
> > >   seq read,  warm,  128k    2451 MiB/s    4939 MiB/s    +101%
> > >   seq read,  warm,  1M      2340 MiB/s    5639 MiB/s    +141%
> > >   writeback write, seq,128k  637 MiB/s     747 MiB/s     +17% *
> > >   writeback write, seq, 1M   694 MiB/s     833 MiB/s     +20% *
> > >   writeback write, rand,128k 1004 MiB/s   1648 MiB/s     +64% +
> > >   writeback write, rand, 1M 1171 MiB/s    2055 MiB/s     +75% +
> > >
> >
> > Hi Joanne,
> >
> > just out of curiosity, did you disable bdi strict limiting for this?
> 
> Hi Horst,
> 
> Those results are with strictlimiting on. After commit 494d2f508883
> ('fuse: use default writeback accounting') [1], I didn't see any
> performance regressions anymore with large folios + strictlimiting on.
> More information on why that commit fixed the issue is in [2].
> 
> When I ran the benchmarks last week with strictlimiting off, I saw roughly:
>     tmpfs:
>       seq,  128k    1174 -> 1648 MiB/s    +40%
>       seq,  1M      1261 -> 1845 MiB/s    +46%
>       rand, 128k    1148 -> 1638 MiB/s    +43%
>       rand, 1M      1273 -> 2065 MiB/s    +62%
> 
>     xfs on NVMe:
>       seq,  128k     621 ->  740 MiB/s    +19%
>       seq,  1M       649 ->  776 MiB/s    +20%
>       rand, 128k    1020 -> 1515 MiB/s    +49%
>       rand, 1M      1125 -> 1895 MiB/s    +68%
> 
> Strict limiting on actually had better performance here, which I think
> is because with the small dirty limit, the dirtying and the writeback
> happen in parallel instead of more dirty pages accumulating and then
> writeback getting kicked off. Because the backing device is so fast,
> it didn't cost throughput for the dirtying and the writeback to happen
> concurrently. The benchmarks were run with fsync, so everything had to
> be flushed before the fio run returned. If the backing device was slow
> and writes were bursty and fsync wasn't enforced, I think there'd
> probably be better performance with strictlimiting off than on, since
> the writer would be throttled to the speed of the backing device with
> strictlimtiing on.
> 
> > In my tests esapcially the large writes run into throttling pretty
> > fast, so that it effectively writes pagewise, which was not the target
> > of the test.
> 
> Are you seeing this on your system with strictlimiting on or off? Is
> that with commit 494d2f508883 in your tree? What test and server were
> you running? Do you know what the speed of the backing device is?

Without your patch I see that when I enable strict limiting most 
FUSE_WRITE requests in the fuse server are 4k. With it disabled the 
writes are triggered with larger sizes.
Since bdi min_ratio is 0 by default I just assumed that as soon as the
cache gets over the limit a write with that page is triggered.

I am not that familiar with the page cache code, so I can't point to
the exact culprit where writing of the dirty page is triggered.

> 
> Thanks,
> Joanne
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/fs/fuse/file.c?id=494d2f508883a6e5c4530e5c6b3c8b2bbfb7318d
> [2] https://lore.kernel.org/linux-fsdevel/CAJnrk1ZSaNRr-HWw-hbo2=LmbZiNGZveb0MwxZbPtBDFgg2icQ@mail.gmail.com/
> 

Thanks,
Horst

      reply	other threads:[~2026-06-25  7:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-24  1:21 [PATCH v1] fuse: enable large folios Joanne Koong
2026-06-24  4:34 ` Jingbo Xu
2026-06-24  6:10   ` Horst Birthelmer
2026-06-24  7:28     ` Jingbo Xu
2026-06-24  6:16 ` Horst Birthelmer
2026-06-24 17:52   ` Joanne Koong
2026-06-25  7:17     ` Horst Birthelmer [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=ajzTpMB0BZ4TY0Np@fedora.fritz.box \
    --to=horst@birthelmer.de \
    --cc=fuse-devel@lists.linux.dev \
    --cc=jefflexu@linux.alibaba.com \
    --cc=joannelkoong@gmail.com \
    --cc=miklos@szeredi.hu \
    /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.