vhost-user的提交者是Luke
Gorrie,他也是snabbswitch的作者。从图上可以看到vhost-backend从原来咋kernel中的vhost-net
变成了用户空间的snabbswitch。 snabbswitch直接接管物理网卡的驱动,从而直接控制网络信息的输入输出。
snabbswitch主要使用了下面的技术来提高性能
-
采用了大页来作为host和vm之间通信的内存空间
-
用户态操作网卡,使用类似于netmap的zero copy技术来加速对物理设备的访问
-
使用numa技术,加快中断响应速率
vhost内核模块主要是把virtiO后端驱动的数据平面迁移到了内核中,而控制平面还在qemu中
前后端 虚拟队列 环形缓冲区 后端 内核vhost_net
guest和host能并行处理IO来提高throughput和减少latency,但是IO的路径并没有比全虚拟化技术减少。上下文切换 VMENTRY VMEXIT
在全虚拟化 中,guest操作系统运行在VMM之上,并不知道它已被虚拟化,不需要任何更改就可以工作。相反,在半虚拟化中,guest操作系统不仅知道它运行在 VMM上,还需要做修改来对接VMM的代码。
virtqueue_notify 中断 收报发包队列
转载自:http://blog.csdn.net/hejin_some/article/details/72179525
刘年超 :
全虚拟化指的是虚拟机操作系统不需要做任何修改就能跑在hypervisor之上,像Qemu、VMware、VirtualBox都能提供全虚拟化方案。而准虚拟化指的是,虚拟机的操作系统要做一定的修改才能运行,比如XEN和KVM就是提供泛虚拟化的方案。
virtio是
一类I/O设备的统称,可以有很多中,如block、net、serial等
-
前端驱动读取io请求放入vring
-
前端通过notify通知机制通知后端驱动处理io
-
notify操作使vcpu执行线程退出到qemu应用层,其从vring中获取客户机io请求信息,将请求线程放入aio线程池,然后vcpu线程的处理流程重新返回到客户机
-
aio线程处理完成后,通知主线程,并向客户机注入中断说明其已完成io操作
-
客户机相应中断,并获取io请求结果和处理信息,接着继续向上层返回结果
阅读(2251) | 评论(0) | 转发(0) |