On 28/06/2016 11:01, Peter Lieven wrote: > the current coroutine freelist implementation has 2 kinds of pools. > One shared release pool between all threads and additionally one > allocation pool per thread. The release pool is especially necessary > if the coroutine is created in a different thread than it is released. > This is e.g. the case if an IDE interface is used. > > But in times of virtio and dataplane the the release pool adds costs > which are not entirely necessary. At first if virtio is used the release > pool tends to fill up to 100% because all coroutines are first handed > back to the release pool. On coroutine create a thread can steal this > release pool and make it its local allocation pool, but during mixed > I/O pattern at the end the release pool is full of useless coroutines > and the alloc_pool has also filled to maximum size.
The cost is 2^16 bytes * 2^6 coroutines, that is 4 MB. I don't think this is worth an extra knob that no one will use... Paolo