On Tue, 12/02 12:05, Paolo Bonzini wrote: > As discussed in the other thread, this brings speedups from > dropping the coroutine mutex (which serializes multiple iothreads, > too) and using ELF thread-local storage. > > The speedup in perf/cost is about 50% (190->125). Windows port tested > with tests/test-coroutine.exe under Wine.
Looks quite nice! Reviewed-by: Fam Zheng <f...@redhat.com> > > Paolo > > v1->v2: include the noinline attribute [many...] > do not mention SwitchToFiber [Kevin] > rename run_main_iothread_exit -> run_main_thread_exit > leave personal opinions out of commit messages :) [Kevin] > mention gain from patch 7 [Peter] > change "alloc_pool_size +=" to "alloc_pool_size =" [Peter] > > Paolo Bonzini (7): > coroutine-ucontext: use __thread > qemu-thread: add per-thread atexit functions > test-coroutine: avoid overflow on 32-bit systems > QSLIST: add lock-free operations > coroutine: rewrite pool to avoid mutex > coroutine: drop qemu_coroutine_adjust_pool_size > coroutine: try harder not to delete coroutines > > block/block-backend.c | 4 -- > coroutine-ucontext.c | 64 +++++++--------------------- > include/block/coroutine.h | 10 ----- > include/qemu/queue.h | 15 ++++++- > include/qemu/thread.h | 4 ++ > qemu-coroutine.c | 104 > ++++++++++++++++++++++------------------------ > tests/test-coroutine.c | 2 +- > util/qemu-thread-posix.c | 37 +++++++++++++++++ > util/qemu-thread-win32.c | 48 ++++++++++++++++----- > 9 files changed, 157 insertions(+), 131 deletions(-) > > -- > 2.1.0 > >