On 2015-03-25 15:44:35 +0000, Peter Grehan said:

In 10.1, virtio-blk i/o is done sychronously in the context of the
guest vCPU exit. If it's a single vCPU guest, or the virtio-net
interrupt happens to be delivered to that vCPU, performance will suffer.

A workaround is to use ahci-hd for the disk emulation and not
virtio-blk. The AHCI emulation does i/o in a dedicated thread and
doesn't block the vCPU thread.

Thank you for your explanation and tips, Peter. I just tried changing virtio-blk -> ahci-hd and preliminary results are good. And now you've mentioned it, I do recall seeing slightly less performance degradation on guests with 2 vCPUs vs. ones with just one.

I've always assumed virtio driver > emulated driver so it didn't occur to me to try ahci-hd.

The only workaround for 10.1 would be to use ahci-hd instead of
virtio-blk. The correct sector size will be reported there.

I haven't had a chance to test this; next time I spin up a guest from scratch I'll try it out.

Try using the -W option to bhyve. This will force the bhyve virtio
code to advertize (non-standard) MSI interrupt capability which OpenBSD
will then use to allocate vectors.

Unfortunately -W didn't help. This is not critical, however, and I'll ask around in the OpenBSD mailing list.

Thanks again for your help.

Julian Hsiao

freebsd-virtualization@freebsd.org mailing list
To unsubscribe, send any mail to 

Reply via email to