我想明白:

  • 与完全虚拟化或硬件辅助虚拟化(如 virtio_net 或 virtio_blk )相比,virtio 驱动程序如何提高性能?
  • 这些 virtio 驱动程序如何影响 VMEXIT/VMENTER 或 guest 和管理程序之间的上下文切换?
  • virtio 的基本思想或架构是什么?

  • 谢谢

    最佳答案

    VIRTIO 是一个半虚拟化接口(interface)。这意味着 guest 必须知道它是在虚拟化环境中运行的,因此它可以部署它的 VIRTIO 驱动程序来与虚拟硬件对话。对半虚拟化情况进行了优化,以将访客->管理程序->主机和返回转换的数量保持在最低限度,从而提高性能。区别在于完全虚拟化,其中 guest 可能不知道它是虚拟化的,因为它提供了许多模拟的硬件,就其而言是真实的硬件。然而,对于硬件的每次访问, guest 都有一个陷阱来处理每个单独的访问。例如,如果一张 NIC 卡需要 20 个寄存器设置来发送一个数据包,该数据包将需要 20 次转换,从客户机到仿真器。

    现在有另一种类型的虚拟化依赖于 IOMMU。这些可以被编程为将它们的地址空间的一部分传递给给定的 VM。因此,VM 可以直接访问硬件,而虚拟机管理程序/主机不需要参与真实硬件的仿真。在这种情况下,它可能是一个虚拟 NIC,它实际上是一个真实的 NIC,它被分割为许多不同的虚拟 NIC,每个虚拟机一个。

    http://vmsplice.net/~stefan/virtio-devconf-2014.pdf 上有一篇关于 VIRTIO 架构的好文章

    关于linux-kernel - VIRTIO : How it increase performance,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24737882/

    10-13 03:05