On Tue, Apr 09, 2019 at 02:28:23PM +0200, Paolo Bonzini wrote: > With aio=thread, adaptive polling makes latency worse rather than > better, because it delays the execution of the ThreadPool's > completion bottom half. > > event_notifier_poll() does run while polling, detecting that > a bottom half was scheduled by a worker thread, but because > ctx->notifier is explicitly ignored in run_poll_handlers_once(), > scheduling the BH does not count as making progress and > run_poll_handlers() keeps running. Fix this by recomputing > the deadline after *timeout could have changed. > > With this change, ThreadPool still cannot participate in polling > but at least it does not suffer from extra latency. > > Reported-by: Sergio Lopez <s...@redhat.com> > Cc: Stefan Hajnoczi <stefa...@gmail.com> > Cc: Kevin Wolf <kw...@redhat.com> > Cc: qemu-bl...@nongnu.org > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > Message-Id: <1553692145-86728-1-git-send-email-pbonz...@redhat.com> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > v1->v2: use qemu_soonest_timeout to handle timeout == -1 > util/aio-posix.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-)
Thanks, applied to my block-next tree: https://github.com/stefanha/qemu/commits/block-next Stefan
signature.asc
Description: PGP signature