VIRTIO:它如何提高性能

时间:2014-07-14 13:41:22

标签: linux-kernel virtual-machine virtualization qemu kvm

我想明白:

  1. 与完全虚拟化或hw辅助虚拟化(如virtio_net或virtio_blk)相比,virtio驱动程序如何提高性能?

  2. 这些virtio驱动程序如何影响VMEXIT / VMENTER或guest虚拟机之间的上下文切换。虚拟机管理程序?

  3. virtio的基本理念或架构是什么?

  4. 谢谢

1 个答案:

答案 0 :(得分:2)

VIRTIO是一个实用的界面。这意味着访客必须意识到它正在虚拟化环境中运行,因此它可以部署它的VIRTIO驱动程序与虚拟硬件进行通信。对半虚拟化的情况进行了优化,以将客户 - >超级遮阳 - 主机和后向转换的数量保持为最小,从而提高性能。将差异与完全虚拟化进行比较,其中客户可能不知道它是虚拟化的,因为它提供了许多模拟的硬件,只要它是真正的硬件。但是,对于每次访问硬件时,guest虚拟机都会有一个陷阱来处理每个单独的访问。例如,如果NIC卡需要20个寄存器设置来发送一个数据包,该数据包将从客户端和模拟器中转发20个。

现在有另一种类型的虚拟化依赖于IOMMU。这些可以被编程为将其地址空间的一部分传递给给定的VM。因此,VM可以直接访问硬件,并且超级遮阳板/主机不需要参与真实硬件的仿真。在这种情况下,它可能是一个虚拟NIC,它实际上是一个真正的NIC,它已被细分为多个不同的虚拟NIC,每个VM一个。

http://vmsplice.net/~stefan/virtio-devconf-2014.pdf

上有一篇很好的VIRTIO架构文章