From: Ming Lei <ming.lei@redhat.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Mikulas Patocka <mpatocka@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
Jens Axboe <axboe@kernel.dk>, Jooyung Han <jooyung@google.com>,
Alasdair Kergon <agk@redhat.com>,
Mike Snitzer <snitzer@kernel.org>,
Heinz Mauelshagen <heinzm@redhat.com>,
zkabelac@redhat.com, dm-devel@lists.linux.dev,
linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
io-uring@vger.kernel.org
Subject: Re: [PATCH] the dm-loop target
Date: Thu, 13 Mar 2025 09:36:22 +0800 [thread overview]
Message-ID: <Z9I2lm31KOQ784nb@fedora> (raw)
In-Reply-To: <Z9FFTiuMC8WD6qMH@fedora>
On Wed, Mar 12, 2025 at 04:27:12PM +0800, Ming Lei wrote:
> On Wed, Mar 12, 2025 at 01:34:02PM +1100, Dave Chinner wrote:
...
>
> block layer/storage has many optimization for batching handling, if IOs
> are submitted from many contexts:
>
> - this batch handling optimization is gone
>
> - IO is re-ordered from underlying hardware viewpoint
>
> - more contention from FS write lock, because loop has single back file.
>
> That is why the single task context is taken from the beginning of loop aio,
> and it performs pretty well for sequential IO workloads, as I shown
> in the zloop example.
>
> >
> > > It isn't perfect, sometime it may be slower than running on io-wq
> > > directly.
> > >
> > > But is there any better way for covering everything?
> >
> > Yes - fix the loop queue workers.
>
> What you suggested is threaded aio by submitting IO concurrently from
> different task context, this way is not the most efficient one, otherwise
> modern language won't invent async/.await.
>
> In my test VM, by running Mikulas's fio script on loop/nvme by the attached
> threaded_aio patch:
>
> NOWAIT with MQ 4 : 70K iops(read), 70K iops(write), cpu util: 40%
> threaded_aio with MQ 4 : 64k iops(read), 64K iops(write), cpu util: 52%
> in tree loop(SQ) : 58K iops(read), 58K iops(write)
>
> Mikulas, please feel free to run your tests with threaded_aio:
>
> modprobe loop nr_hw_queues=4 threaded_aio=1
>
> by applying the attached the patch over the loop patchset.
>
> The performance gap could be more obvious in fast hardware.
For the normal single job sequential WRITE workload, on same test VM, still
loop over /dev/nvme0n1, and running fio over loop directly:
fio --direct=1 --bs=4k --runtime=40 --time_based --numjobs=1 --ioengine=libaio \
--iodepth=16 --group_reporting=1 --filename=/dev/loop0 -name=job --rw=write
threaded_aio(SQ) : 81k iops(write), cpu util: 20%
in tree loop(SQ) : 100K iops(write), cpu util: 7%
Thanks,
Ming
next prev parent reply other threads:[~2025-03-13 1:36 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-03 10:24 [PATCH] the dm-loop target Mikulas Patocka
2025-03-03 13:59 ` Christoph Hellwig
[not found] ` <CAM23VxprhJgOPfhxQf6QNWzHd6+-ZwbjSo-oMHCD2WDQiKntMg@mail.gmail.com>
2025-03-03 15:13 ` Christoph Hellwig
2025-03-03 15:22 ` Matthew Wilcox
2025-03-03 15:31 ` Christoph Hellwig
[not found] ` <CAM23VxprSduDDK8qvLVkUt9WWmLMPFjhqKB8X4e6gw7Wv-6R2w@mail.gmail.com>
2025-03-03 17:24 ` Christoph Hellwig
[not found] ` <CAM23Vxoxyrf9nwJd1Xe8uncAPiyK8yaNZNsugwX8p=qo1n6yVg@mail.gmail.com>
2025-03-04 13:52 ` Christoph Hellwig
2025-03-03 16:16 ` Mikulas Patocka
2025-03-03 17:24 ` Christoph Hellwig
2025-03-03 21:03 ` Mikulas Patocka
2025-03-04 2:13 ` Dave Chinner
2025-03-04 11:18 ` Mikulas Patocka
2025-03-04 13:50 ` Christoph Hellwig
2025-03-05 0:01 ` Dave Chinner
2025-03-07 15:21 ` Mikulas Patocka
2025-03-08 3:49 ` Darrick J. Wong
2025-03-08 20:45 ` Mikulas Patocka
2025-03-09 0:05 ` Ming Lei
2025-03-10 11:18 ` Mikulas Patocka
2025-03-11 1:27 ` Dave Chinner
2025-03-11 10:43 ` Ming Lei
2025-03-12 2:34 ` Dave Chinner
2025-03-12 6:24 ` Christoph Hellwig
2025-03-12 8:26 ` Ming Lei
2025-03-13 1:36 ` Ming Lei [this message]
2025-03-13 16:36 ` Mikulas Patocka
2025-03-18 4:27 ` Dave Chinner
2025-03-18 7:57 ` Christoph Hellwig
2025-03-18 9:34 ` Ming Lei
2025-03-20 7:08 ` Christoph Hellwig
2025-03-20 7:41 ` Ming Lei
2025-03-20 14:22 ` Christoph Hellwig
2025-03-20 14:36 ` Ming Lei
2025-03-25 10:15 ` Dave Chinner
2025-03-25 12:23 ` Ming Lei
2025-03-09 0:16 ` Ming Lei
2025-03-10 11:20 ` Mikulas Patocka
2025-03-04 13:49 ` Christoph Hellwig
[not found] ` <CAM23Vxr=fKy-0L1R5P-5h6A95acKT_d=CC1E+TAzAs8v6q9gHw@mail.gmail.com>
2025-03-04 16:04 ` Christoph Hellwig
[not found] ` <CAM23VxqJX46DCpCiH5qxPpDLtMVg87Ba8sx55aQ4hvt-XaHzuQ@mail.gmail.com>
2025-03-04 17:17 ` Christoph Hellwig
2025-03-12 13:26 ` Kent Overstreet
2025-03-12 14:20 ` Christoph Hellwig
2025-03-12 16:09 ` Kent Overstreet
2025-03-13 12:44 ` Christoph Hellwig
2025-03-13 16:21 ` Mikulas Patocka
2025-03-13 16:33 ` Kent Overstreet
2025-03-03 16:55 ` Bryn M. Reeves
2025-03-03 17:06 ` Mikulas Patocka
2025-03-03 17:18 ` Bryn M. Reeves
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=Z9I2lm31KOQ784nb@fedora \
--to=ming.lei@redhat.com \
--cc=agk@redhat.com \
--cc=axboe@kernel.dk \
--cc=david@fromorbit.com \
--cc=dm-devel@lists.linux.dev \
--cc=hch@infradead.org \
--cc=heinzm@redhat.com \
--cc=io-uring@vger.kernel.org \
--cc=jooyung@google.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=snitzer@kernel.org \
--cc=zkabelac@redhat.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 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.