v3: * Use COROUTINE_POOL_RESERVATION constant in block.c [Lluis] v2: * Assert that callers never reduce pool below default size [eblake]
The coroutine pool reuses exited coroutines to make qemu_coroutine_create() cheap. The size of the pool is capped to prevent it from hogging memory after a period of high coroutine activity. Previously the max size was hardcoded to 64 but this doesn't scale with guest size. A guest with lots of disks can do more parallel I/O and therefore requires a larger coroutine pool size. This series tries to solve the problem by scaling pool size according to the number of drives. Ming has confirmed that this patch series, together with his block plug/unplug series, solves the dataplane performance regression in QEMU 2.1. Stefan Hajnoczi (2): coroutine: make pool size dynamic block: bump coroutine pool size for drives block.c | 6 ++++++ include/block/coroutine.h | 11 +++++++++++ qemu-coroutine.c | 26 +++++++++++++++++++++++--- 3 files changed, 40 insertions(+), 3 deletions(-) -- 1.9.3