Il 01/07/2014 16:49, Ming Lei ha scritto:
Let me provide some data when running randread(bs 4k, libaio)
from VM for 10sec:

1), qemu.git/master
- write(): 731K
- rt_sigprocmask(): 417K
- read(): 21K
- ppoll(): 10K
- io_submit(): 5K
- io_getevents(): 4K

2), qemu 2.0
- write(): 9K
- read(): 28K
- ppoll(): 16K
- io_submit(): 12K
- io_getevents(): 10K

> The sigprocmask can probably be optimized away since the thread's
> signal mask remains unchanged most of the time.
>
> I'm not sure what is causing the write().
I am investigating it...

I would guess sigprocmask is getcontext (from qemu_coroutine_new) and write is aio_notify (from qemu_bh_schedule).

Both can be eliminated by introducing a fast path in bdrv_aio_{read,write}v, that bypasses coroutines in the common case of no I/O throttling, no copy-on-write, etc.

Paolo

Reply via email to