On 27/11/2014 11:27, Peter Lieven wrote: > +static __thread struct CoRoutinePool { > + Coroutine *ptrs[POOL_MAX_SIZE]; > + unsigned int size; > + unsigned int nextfree; > +} CoPool; >
The per-thread ring unfortunately didn't work well last time it was tested. Devices that do not use ioeventfd (not just the slow ones, even decently performing ones like ahci, nvme or megasas) will create the coroutine in the VCPU thread, and destroy it in the iothread. The result is that coroutines cannot be reused. Can you check if this is still the case? Paolo