On Mon, Aug 4, 2014 at 6:16 PM, Stefan Hajnoczi <stefa...@redhat.com> wrote: > On Wed, Jul 30, 2014 at 07:39:33PM +0800, Ming Lei wrote: >> These patches bring up below 4 changes: >> >> - introduce selective coroutine bypass mechanism >> for improving performance of virtio-blk dataplane with >> raw format image >> >> - introduce object allocation pool and apply it to >> virtio-blk dataplane for improving its performance >> >> - linux-aio changes: fixing for cases of -EAGAIN and partial >> completion, increase max events to 256, and remove one unuseful >> fields in 'struct qemu_laiocb' >> >> - support multi virtqueue for virtio-blk dataplane > > Please split this series into separate series. > > Patch 1-5 - block layer coroutine bypass > > These patches are hacky and not correct yet (e.g. you cannot enable > bypass on a per-AioContext basis since multiple devices can share an > IOThread's AioContext and some of them might not be raw, you are
Good point, so the 'bypass' info should be moved to BlockDriverState. > invoking acb's cb() directly instead of via a BH so there may be > reentrancy). Yes, as Paolo pointed too, I will change to run acb's cb() via a BH in v1 patchset. > > It would be great if cleaning up the block.c aio->co emulation layers > could improve performance. That is a good idea too. But from current profiling, coroutine is surely one of main causes for the performance regression. Thanks,