内核态的 vhost-net 后端
前面提到的 virtio 在 host 中的后端处理程序(backend)一般是由用户空间的 QEMU 提供的,然而,如果对于网路 I/O 请求的后端处理能够在内核空间完成,则效率会更高,能提高网络吞吐量和减少网络延迟。vhost-net 内核驱动模块,将 virtio-net 的后端处理任务放到内核空间中执行,从而提高效率。
网卡多队列
当虚拟机中的 virtio-net 网卡只有一个队列时,该网卡的中断只能集中由一个 CPU 来处理;当开启网卡多队列时,在 host 上,我们能看到多个 vhost 线程来处理网络后端,同时,在 虚拟机中,virtio-net 多队列网卡也可以将中断分散到多个 CPU 上由它们并行处理,从而提高性能。
内核态的 vhost-net 后端 与 qemu后端 的区别如下:
实例操作:
[root@localhost ~]# /usr/libexec/qemu-kvm centos70-64.qcow2 -enable-kvm -smp 2 -m 2G -device virtio-net-pci,netdev=vnet0,mq=on,vectors&#