vhost 的演变
virtio-net的后端驱动经历过从virtio-net后端----到内核态vhost-net,再到用户态vhost-user
virtio-net的后端驱动基本要素就是
虚拟队列机制 | 交互前后端数据 |
消息通知机制 | 客户机到宿主机的消息通知 |
中断机制 | 宿主机到客户机的中断请求通知和处理 |
kvm是提供虚拟化硬件的内核模块
qemu利用kvm来模拟整个系统的运行环境包括处理器和外设;tap则是内核的虚拟以太网设备
古老的机制是客户发送数据,通过消息给kvm,并退出到qemu进程,然后qemu写tap
宿主机和客户机还有qemu之间的上下文切换和拷贝机cpu特权级切换,导致性能不如人意,
1,数据从tap到qemu的拷贝,qemu到客户机的拷贝,两次拷贝
2,消息路径到报文到tap设备内核发出到qemu,然后qemu通过ioctl项kvm请求中断,kvm发送中断到客户机,
很费劲吧