[PATCH v2 0/3] virtio: Use ioeventfd for virtqueue notify

Stefan Hajnoczi
2010-11-11T13:47:37Z

This is a rewrite of the virtio-ioeventfd patchset to work at the virtio-pci.c
level instead of virtio.c. This results in better integration with the
host/guest notifier code and makes the code simpler (no more state machine).

Virtqueue notify is currently handled synchronously in userspace virtio. This
prevents the vcpu from executing guest code while hardware emulation code
handles the notify.

On systems that support KVM, the ioeventfd mechanism can be used to make
virtqueue notify a lightweight exit by deferring hardware emulation to the
iothread and allowing the VM to continue execution. This model is similar to
how vhost receives virtqueue notifies.

The result of this change is improved performance for userspace virtio devices.
Virtio-blk throughput increases especially for multithreaded scenarios and
virtio-net transmit throughput increases substantially.

Now that this code is in virtio-pci.c it is possible to explicitly enable
devices for which virtio-ioeventfd should be used. Only virtio-blk and
virtio-net are enabled at this time.