[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous progr
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming |
Date: |
Wed, 27 Jul 2011 12:03:57 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110707 Thunderbird/5.0 |
Am 27.07.2011 11:45, schrieb Aneesh Kumar K.V:
> On Tue, 26 Jul 2011 10:21:12 +0100, 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 second patch. The fourth 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.
>>
>> v8:
>> * Bisectability: introduce gthread implementation before ucontext/fibers
>
> Can we also get CoMutex and CoQueue patches also merged. I use them in
> the VirtFS series.
>
> http://repo.or.cz/w/qemu/kevin.git/shortlog/refs/heads/coroutine-devel
> http://repo.or.cz/w/qemu/v9fs.git/commit/318ef0b9b01cd296f8c30d8288139b9bed859892
I introduce these in my block coroutine patches. I posted a RFC last
week and the first "real" patch series yesterday, so I hope they get
review and can be merged into master soon.
Kevin
- [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 1/5] coroutine: add gthread dependency, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 5/5] coroutine: add test-coroutine --benchmark-lifecycle, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 3/5] coroutine: add ucontext and win32 implementations, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 2/5] coroutine: introduce coroutines API, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 4/5] coroutine: add test-coroutine automated tests, Stefan Hajnoczi, 2011/07/26
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/07/26
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Aneesh Kumar K.V, 2011/07/27
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming,
Kevin Wolf <=
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Aneesh Kumar K.V, 2011/07/27
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/07/29