All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Peter Lieven <pl@kamp.de>
Cc: pbonzini@redhat.com, ming.lei@canonical.com,
	qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 2/3] raw-posix: Convert Linux AIO submission to coroutines
Date: Fri, 28 Nov 2014 14:44:07 +0100	[thread overview]
Message-ID: <20141128134407.GF4035@noname.redhat.com> (raw)
In-Reply-To: <20141128125700.GE4035@noname.redhat.com>

Am 28.11.2014 um 13:57 hat Kevin Wolf geschrieben:
> Am 27.11.2014 um 10:50 hat Peter Lieven geschrieben:
> > On 26.11.2014 15:46, Kevin Wolf wrote:
> > >This improves the performance of requests because an ACB doesn't need to
> > >be allocated on the heap any more. It also makes the code nicer and
> > >smaller.
> > >
> > >As a side effect, the codepath taken by aio=threads is changed to use
> > >paio_submit_co(). This doesn't change the performance at this point.
> > >
> > >Results of qemu-img bench -t none -c 10000000 [-n] /dev/loop0:
> > >
> > >       |      aio=native       |     aio=threads
> > >       | before   | with patch | before   | with patch
> > >------+----------+------------+----------+------------
> > >run 1 | 29.921s  | 26.932s    | 35.286s  | 35.447s
> > >run 2 | 29.793s  | 26.252s    | 35.276s  | 35.111s
> > >run 3 | 30.186s  | 27.114s    | 35.042s  | 34.921s
> > >run 4 | 30.425s  | 26.600s    | 35.169s  | 34.968s
> > >run 5 | 30.041s  | 26.263s    | 35.224s  | 35.000s
> > >
> > >TODO: Do some more serious benchmarking in VMs with less variance.
> > >Results of a quick fio run are vaguely positive.
> > 
> > I still see the main-loop spun warnings with this patches applied to master.
> > It wasn't there with the original patch from August.
> > 
> > ~/git/qemu$ ./qemu-img bench -t none -c 10000000 -n /dev/ram1
> > Sending 10000000 requests, 4096 bytes each, 64 in parallel
> > main-loop: WARNING: I/O thread spun for 1000 iterations
> > Run completed in 31.947 seconds.
> 
> Yes, I still need to bisect that. The 'qemu-img bench' numbers above are
> actually also from August, we have regressed meanwhile by about a
> second, and I also haven't found the reason for that yet.

Did the first part of this now. The commit that introduced the "spun"
message is 2cdff7f6 ('linux-aio: avoid deadlock in nested aio_poll()
calls').

The following patch doesn't make it go away completely, but I only see
it sometime during like every other run now, instead of immediately
after starting qemu-img bench. It's probably a (very) minor performance
optimisation, too.

Kevin


diff --git a/block/linux-aio.c b/block/linux-aio.c
index fd8f0e4..1a0ec62 100644
--- a/block/linux-aio.c
+++ b/block/linux-aio.c
@@ -136,6 +136,8 @@ static void qemu_laio_completion_bh(void *opaque)
 
         qemu_laio_process_completion(s, laiocb);
     }
+
+    qemu_bh_cancel(s->completion_bh);
 }
 
 static void qemu_laio_completion_cb(EventNotifier *e)
@@ -143,7 +145,7 @@ static void qemu_laio_completion_cb(EventNotifier *e)
     struct qemu_laio_state *s = container_of(e, struct qemu_laio_state, e);
 
     if (event_notifier_test_and_clear(&s->e)) {
-        qemu_bh_schedule(s->completion_bh);
+        qemu_laio_completion_bh(s);
     }
 }

  reply	other threads:[~2014-11-28 13:44 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-26 14:46 [Qemu-devel] [RFC PATCH 0/3] linux-aio: Convert to coroutines Kevin Wolf
2014-11-26 14:46 ` [Qemu-devel] [RFC PATCH 1/3] qemu-img bench Kevin Wolf
2014-11-28 11:49   ` Stefan Hajnoczi
2014-11-28 12:19     ` Kevin Wolf
2014-12-01 11:15       ` Stefan Hajnoczi
2014-11-26 14:46 ` [Qemu-devel] [RFC PATCH 2/3] raw-posix: Convert Linux AIO submission to coroutines Kevin Wolf
2014-11-27  9:50   ` Peter Lieven
2014-11-28 12:57     ` Kevin Wolf
2014-11-28 13:44       ` Kevin Wolf [this message]
2014-11-28  2:59   ` Ming Lei
2014-11-28  7:33     ` Markus Armbruster
2014-11-28  8:12       ` Ming Lei
2014-11-28  8:59         ` Markus Armbruster
2014-11-28  9:15           ` Ming Lei
2014-11-28  9:44     ` Paolo Bonzini
2014-11-28 10:06     ` Kevin Wolf
2014-11-26 14:46 ` [Qemu-devel] [RFC PATCH 3/3] linux-aio: Don't reenter request coroutine recursively Kevin Wolf
2014-12-04 14:37   ` Kevin Wolf
2014-12-04 15:22     ` Ming Lei
2014-12-04 15:39       ` Kevin Wolf
2014-12-04 15:45         ` Ming Lei

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=20141128134407.GF4035@noname.redhat.com \
    --to=kwolf@redhat.com \
    --cc=ming.lei@canonical.com \
    --cc=pbonzini@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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.