Hi Stefan, I found VM block I/O thoughput is decreased by more than 40% on my laptop, and looks much worsen in my server environment, and it is caused by your commit 580b6b2aa2:
dataplane: use the QEMU block layer for I/O I run fio with below config to test random read: [global] direct=1 size=4G bsrange=4k-4k timeout=20 numjobs=4 ioengine=libaio iodepth=64 filename=/dev/vdc group_reporting=1 [f] rw=randread Together with throughput drop, the latency is improved a little. With this commit, I/O block submitted to fs becomes much smaller than before, and more io_submit() need to be called to kernel, that means iodepth may become much less. I am not surprised with the result since I did compare VM I/O performance between qemu and lkvm before, which has no big qemu lock problem and handle I/O in a dedicated thread, but lkvm's block IO is still much worse than qemu from view of throughput, because lkvm doesn't submit block I/O at batch like the way of previous dataplane, IMO. But now you change the way of submitting I/O, could you share the motivation about the change? Is the throughput drop you expect? Thanks, -- Ming Lei