Virtio ring and virtio-net Michael S Tsirkin Red Hat news case study challenges
Virtio with kvm Guest virtio Guest KVM eventfd Vhost qemu
io Guest virtio Guest KVM eventfd Vhost qemu
interrupt Guest virtio Guest KVM eventfd Vhost qemu
virtio-test Guest test virtio KVM eventfd Vhost qemu
poll test virtio eventfd Vhost
write test virtio eventfd Vhost
linux/tools/virtio # vi drivers/virtio/virtio.c .... # cd tools/virtio/ ; make -q # insmod vhost_test/vhost_test.ko # time ./virtio_test real 0m0.649s user 0m0.295s sys 0m0.335s
Virtio ring Avail Desc Used Guest Vhost !
window ! ! Used Guest Vhost
Event index ! ! Used Guest Vhost !
Extending virtio test Guest virtio KVM eventfd Vhost qemu 31 30 29 28 27-0 features test Guest virtio KVM eventfd Vhost qemu
linux/tools/virtio # time ./virtio_test --no-event-idx real 0m0.649s user 0m0.295s sys 0m0.335s # time ./virtio_test --event-idx real 0m0.169s user 0m0.140s sys 0m0.019s
virtio-net TX Guest KVM Vhost macvtap NIC
Zcopy TX Guest KVM Vhost macvtap NIC
Guest -> External 10 Gb/s 64K 4K 64K 4K 2K 2K
Filtering :80 :22 Guest :80? KVM Vhost tap bridge NIC
Partial copy Guest :22 :80 :80? KVM Vhost tap bridge skbuff NIC
Zcopy RX Guest B tap KVM Vhost Guest KVM Vhost tap bridge NIC ?
Guest 2 Guest Guest A Guest B KVM Vhost tap bridge tap Vhost KVM NIC
multiqueue Guest TX RX TX RX Macvtap TX RX TX RX ? NIC TX RX TX RX
External -> Guest 10 Gb/s 4 8 512b 4 8 2 2
Status/TODO Virtio ring + Zero copy TX + Multiqueue + Zero copy RX ? Bridge zero copy ? Level interrupts ?
Questions?
Virtio ring Avail Desc Used Guest Vhost