From: Chris Mason <chris.mason@oracle.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: Shaohua Li <shli@kernel.org>,
Dave Kleikamp <dave.kleikamp@oracle.com>,
linux-aio@kvack.org, linux-kernel@vger.kernel.org,
Andi Kleen <ak@linux.intel.com>, Jeff Moyer <jmoyer@redhat.com>
Subject: Re: [PATCH] AIO: Don't plug the I/O queue in do_io_submit()
Date: Thu, 15 Dec 2011 11:40:49 -0500 [thread overview]
Message-ID: <20111215164049.GH18252@shiny> (raw)
In-Reply-To: <4EEA1D1E.8030008@kernel.dk>
On Thu, Dec 15, 2011 at 05:15:26PM +0100, Jens Axboe wrote:
> On 2011-12-15 02:09, Shaohua Li wrote:
> > 2011/12/14 Dave Kleikamp <dave.kleikamp@oracle.com>:
> >> Asynchronous I/O latency to a solid-state disk greatly increased
> >> between the 2.6.32 and 3.0 kernels. By removing the plug from
> >> do_io_submit(), we observed a 34% improvement in the I/O latency.
> >>
> >> Unfortunately, at this level, we don't know if the request is to
> >> a rotating disk or not.
> >>
> >> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
> >> Cc: linux-aio@kvack.org
> >> Cc: Chris Mason <chris.mason@oracle.com>
> >> Cc: Jens Axboe <axboe@kernel.dk>
> >> Cc: Andi Kleen <ak@linux.intel.com>
> >> Cc: Jeff Moyer <jmoyer@redhat.com>
> >>
> >> diff --git a/fs/aio.c b/fs/aio.c
> >> index 78c514c..d131a2c 100644
> >> --- a/fs/aio.c
> >> +++ b/fs/aio.c
> >> @@ -1696,7 +1696,6 @@ long do_io_submit(aio_context_t ctx_id, long nr,
> >> struct kioctx *ctx;
> >> long ret = 0;
> >> int i = 0;
> >> - struct blk_plug plug;
> >> struct kiocb_batch batch;
> >>
> >> if (unlikely(nr < 0))
> >> @@ -1716,8 +1715,6 @@ long do_io_submit(aio_context_t ctx_id, long nr,
> >>
> >> kiocb_batch_init(&batch, nr);
> >>
> >> - blk_start_plug(&plug);
> >> -
> >> /*
> >> * AKPM: should this return a partial result if some of the IOs were
> >> * successfully submitted?
> >> @@ -1740,7 +1737,6 @@ long do_io_submit(aio_context_t ctx_id, long nr,
> >> if (ret)
> >> break;
> >> }
> >> - blk_finish_plug(&plug);
> >>
> >> kiocb_batch_free(&batch);
> >> put_ioctx(ctx);
> > can you explain why this can help? Note, in 3.1 kernel we now force flush
> > plug list if the list is too long, which will remove a lot of latency.
>
> I think that would indeed be an interesting addition to test on top of
> the 3.0 kernel being used.
>
> This is a bit of a sticky situation. We want the plugging and merging on
> rotational storage, and on SSDs we want the batch addition to the queue
> to avoid hammering on the queue lock. At this level, we have no idea.
> But we don't want to introduce longer latencies. So the question is, are
> these latencies due to long queues (and hence would be helped with the
> auto-replug on 3.1 and newer), or are they due to the submissions
> running for too long. If the latter, then we can either look into
> reducing the time spent between submitting the individual pieces. Or at
> least not holding up too long.
Each io_submit call is sending down about 34K of IO to two different devices.
The latencies were measured just on the process writing the redo
logs, so it is a very specific subset of the overall benchmark.
The patched kernel only does 4x more iops for the redo logs than the
unpatched kernel, so we're talking ~8K ios here.
-chris
prev parent reply other threads:[~2011-12-15 16:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-13 21:44 [PATCH] AIO: Don't plug the I/O queue in do_io_submit() Dave Kleikamp
2011-12-13 22:18 ` Jeff Moyer
2011-12-13 23:26 ` Dave Kleikamp
2011-12-14 20:58 ` Chris Mason
2011-12-16 14:45 ` Jeff Moyer
2011-12-15 1:09 ` Shaohua Li
2011-12-15 16:15 ` Jens Axboe
2011-12-15 16:40 ` Chris Mason [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=20111215164049.GH18252@shiny \
--to=chris.mason@oracle.com \
--cc=ak@linux.intel.com \
--cc=axboe@kernel.dk \
--cc=dave.kleikamp@oracle.com \
--cc=jmoyer@redhat.com \
--cc=linux-aio@kvack.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shli@kernel.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.