All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin LaHaise <bcrl@kvack.org>
To: Fam Zheng <famz@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-aio@kvack.org, linux-fsdevel@vger.kernel.org,
	stefanha@redhat.com, pbonzini@redhat.com, lersek@redhat.com
Subject: Re: [PATCH] aio: Skip timer for io_getevents if timeout=0
Date: Thu, 6 Nov 2014 14:41:19 -0500	[thread overview]
Message-ID: <20141106194119.GD25610@kvack.org> (raw)
In-Reply-To: <1415277876-7060-1-git-send-email-famz@redhat.com>

Hi Fam,

On Thu, Nov 06, 2014 at 08:44:36PM +0800, Fam Zheng wrote:
> In this case, it is basically a polling. Let's not involve timer at all
> because that would hurt performance for application event loops.
> 
> In an arbitrary test I've done, io_getevents syscall elapsed time
> reduces from 50000+ nanoseconds to a few hundereds.

This looks quite reasonable.  I've applied this to my aio-next tree.

		-ben

> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  fs/aio.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/aio.c b/fs/aio.c
> index 84a7510..7c0b561 100644
> --- a/fs/aio.c
> +++ b/fs/aio.c
> @@ -1221,8 +1221,12 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
>  	 * the ringbuffer empty. So in practice we should be ok, but it's
>  	 * something to be aware of when touching this code.
>  	 */
> -	wait_event_interruptible_hrtimeout(ctx->wait,
> -			aio_read_events(ctx, min_nr, nr, event, &ret), until);
> +	if (until.tv64 == 0)
> +		aio_read_events(ctx, min_nr, nr, event, &ret);
> +	else
> +		wait_event_interruptible_hrtimeout(ctx->wait,
> +				aio_read_events(ctx, min_nr, nr, event, &ret),
> +				until);
>  
>  	if (!ret && signal_pending(current))
>  		ret = -EINTR;
> -- 
> 1.9.3

-- 
"Thought is the essence of where you are now."

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to majordomo@kvack.org.  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>

WARNING: multiple messages have this Message-ID (diff)
From: Benjamin LaHaise <bcrl@kvack.org>
To: Fam Zheng <famz@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-aio@kvack.org, linux-fsdevel@vger.kernel.org,
	stefanha@redhat.com, pbonzini@redhat.com, lersek@redhat.com
Subject: Re: [PATCH] aio: Skip timer for io_getevents if timeout=0
Date: Thu, 6 Nov 2014 14:41:19 -0500	[thread overview]
Message-ID: <20141106194119.GD25610@kvack.org> (raw)
In-Reply-To: <1415277876-7060-1-git-send-email-famz@redhat.com>

Hi Fam,

On Thu, Nov 06, 2014 at 08:44:36PM +0800, Fam Zheng wrote:
> In this case, it is basically a polling. Let's not involve timer at all
> because that would hurt performance for application event loops.
> 
> In an arbitrary test I've done, io_getevents syscall elapsed time
> reduces from 50000+ nanoseconds to a few hundereds.

This looks quite reasonable.  I've applied this to my aio-next tree.

		-ben

> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  fs/aio.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/aio.c b/fs/aio.c
> index 84a7510..7c0b561 100644
> --- a/fs/aio.c
> +++ b/fs/aio.c
> @@ -1221,8 +1221,12 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
>  	 * the ringbuffer empty. So in practice we should be ok, but it's
>  	 * something to be aware of when touching this code.
>  	 */
> -	wait_event_interruptible_hrtimeout(ctx->wait,
> -			aio_read_events(ctx, min_nr, nr, event, &ret), until);
> +	if (until.tv64 == 0)
> +		aio_read_events(ctx, min_nr, nr, event, &ret);
> +	else
> +		wait_event_interruptible_hrtimeout(ctx->wait,
> +				aio_read_events(ctx, min_nr, nr, event, &ret),
> +				until);
>  
>  	if (!ret && signal_pending(current))
>  		ret = -EINTR;
> -- 
> 1.9.3

-- 
"Thought is the essence of where you are now."

  reply	other threads:[~2014-11-06 19:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-06 12:44 [PATCH] aio: Skip timer for io_getevents if timeout=0 Fam Zheng
2014-11-06 19:41 ` Benjamin LaHaise [this message]
2014-11-06 19:41   ` Benjamin LaHaise

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=20141106194119.GD25610@kvack.org \
    --to=bcrl@kvack.org \
    --cc=famz@redhat.com \
    --cc=lersek@redhat.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=viro@zeniv.linux.org.uk \
    /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.