From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:52246 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725908AbeLFT3q (ORCPT ); Thu, 6 Dec 2018 14:29:46 -0500 From: Jeff Moyer To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, hch@lst.de Subject: Re: [PATCH 09/26] aio: only use blk plugs for > 2 depth submissions References: <20181204233729.26776-1-axboe@kernel.dk> <20181204233729.26776-10-axboe@kernel.dk> Date: Thu, 06 Dec 2018 14:29:44 -0500 In-Reply-To: <20181204233729.26776-10-axboe@kernel.dk> (Jens Axboe's message of "Tue, 4 Dec 2018 16:37:12 -0700") Message-ID: MIME-Version: 1.0 Content-Type: text/plain Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Jens Axboe writes: > Plugging is meant to optimize submission of a string of IOs, if we don't > have more than 2 being submitted, don't bother setting up a plug. Is there really that much overhead in blk_{start|finish}_plug? -Jeff > > Reviewed-by: Christoph Hellwig > Signed-off-by: Jens Axboe > --- > fs/aio.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 522c04864d82..ed6c3914477a 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -69,6 +69,12 @@ struct aio_ring { > struct io_event io_events[0]; > }; /* 128 bytes + ring size */ > > +/* > + * Plugging is meant to work with larger batches of IOs. If we don't > + * have more than the below, then don't bother setting up a plug. > + */ > +#define AIO_PLUG_THRESHOLD 2 > + > #define AIO_RING_PAGES 8 > > struct kioctx_table { > @@ -1919,7 +1925,8 @@ SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, > if (nr > ctx->nr_events) > nr = ctx->nr_events; > > - blk_start_plug(&plug); > + if (nr > AIO_PLUG_THRESHOLD) > + blk_start_plug(&plug); > for (i = 0; i < nr; i++) { > struct iocb __user *user_iocb; > > @@ -1932,7 +1939,8 @@ SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, > if (ret) > break; > } > - blk_finish_plug(&plug); > + if (nr > AIO_PLUG_THRESHOLD) > + blk_finish_plug(&plug); > > percpu_ref_put(&ctx->users); > return i ? i : ret; > @@ -1959,7 +1967,8 @@ COMPAT_SYSCALL_DEFINE3(io_submit, compat_aio_context_t, ctx_id, > if (nr > ctx->nr_events) > nr = ctx->nr_events; > > - blk_start_plug(&plug); > + if (nr > AIO_PLUG_THRESHOLD) > + blk_start_plug(&plug); > for (i = 0; i < nr; i++) { > compat_uptr_t user_iocb; > > @@ -1972,7 +1981,8 @@ COMPAT_SYSCALL_DEFINE3(io_submit, compat_aio_context_t, ctx_id, > if (ret) > break; > } > - blk_finish_plug(&plug); > + if (nr > AIO_PLUG_THRESHOLD) > + blk_finish_plug(&plug); > > percpu_ref_put(&ctx->users); > return i ? i : ret;