[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 0/4] Coroutines for better asynchronous progr
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v3 0/4] Coroutines for better asynchronous programming |
Date: |
Sat, 14 May 2011 08:45:46 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Sat, May 14, 2011 at 08:55:40AM +0200, Corentin Chary wrote:
> On Fri, May 13, 2011 at 11:26 AM, Stefan Hajnoczi
> <address@hidden> wrote:
> > QEMU is event-driven and suffers when blocking operations are performed
> > because
> > VM execution may be stopped until the operation completes. Therefore many
> > operations that could block are performed asynchronously and a callback is
> > invoked when the operation has completed. This allows QEMU to continue
> > executing while the operation is pending.
> >
> > The downside to callbacks is that they split up code into many smaller
> > functions, each of which is a single step in a state machine that quickly
> > becomes complex and hard to understand. Callback functions also result in
> > lots
> > of noise as variables are packed and unpacked into temporary structs that
> > pass
> > state to the callback function.
> >
> > This patch series introduces coroutines as a solution for writing
> > asynchronous
> > code while still having a nice sequential control flow. The semantics are
> > explained in the first patch. The second patch adds automated tests.
> >
> > A nice feature of coroutines is that it is relatively easy to take
> > synchronous
> > code and lift it into a coroutine to make it asynchronous. Work has been
> > done
> > to move qcow2 request processing into coroutines and thereby make it
> > asynchronous (today qcow2 will perform synchronous metadata accesses). This
> > qcow2 work is still ongoing and not quite ready for mainline yet.
> >
> > Coroutines are also being used for virtfs (virtio-9p) so I have submitted
> > this
> > patch now because virtfs patches that depend on coroutines are being
> > published.
> >
> > Other areas of QEMU that could take advantage of coroutines include the VNC
> > server, migration, and qemu-tools.
>
> Hum, the VNC server is already threaded, how would coroutines help ?
> Do you plan to rewrite the server using coroutines instead of threads
> ?
The main control flow in the VNC server is a state-machine. Imagine a
VNC session running as sequential code in a coroutine instead of being
broken up across callbacks. I think it would be easier to follow
although rewriting it now may not be worth the effort unless significant
future VNC work is planned for the future.
Stefan
- [Qemu-devel] [PATCH v3 0/4] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/05/13
- [Qemu-devel] [PATCH v3 4/4] coroutine: pool coroutines to speed up creation, Stefan Hajnoczi, 2011/05/13
- [Qemu-devel] [PATCH v3 2/4] coroutine: add check-coroutine automated tests, Stefan Hajnoczi, 2011/05/13
- [Qemu-devel] [PATCH v3 3/4] coroutine: add check-coroutine --benchmark-lifecycle, Stefan Hajnoczi, 2011/05/13
- [Qemu-devel] [PATCH v3 1/4] coroutine: introduce coroutines, Stefan Hajnoczi, 2011/05/13
- Re: [Qemu-devel] [PATCH v3 0/4] Coroutines for better asynchronous programming, Corentin Chary, 2011/05/14
- Re: [Qemu-devel] [PATCH v3 0/4] Coroutines for better asynchronous programming,
Stefan Hajnoczi <=