【问题标题】:Is the performance loss on Type-2 hypervisors considerable?Type-2 管理程序的性能损失是否相当大?
【发布时间】:2014-05-27 16:53:17
【问题描述】:

前段时间在我的操作系统课上,我记得老师说过类似的话

Type 1 hypervisor 直接在硬件上运行;类型 2 管理程序 在其他操作系统上运行,例如 Linux

这表明类型 2 管理程序下的虚拟机性能较低。

我正在做一些简单的基准测试,例如迭代 for 循环或将字符写入文本文件,使用 VirtualBox(这是一个 2 类管理程序),但发现对性能的影响很小。

再调查一下,在我的计算机上,VirtualBox 似乎可以使用 VT-x 进行硬件虚拟化,即使它在我的 Windows 操作系统下运行。

所以出现的问题是,如今类型 2 虚拟机管理程序真的会遭受性能损失,尤其是考虑到它们可以实现硬件虚拟化吗?

如果答案是否定的,那么为什么 1 类和 2 类管理程序之间的区别仍然存在?

【问题讨论】:

  • 这和编程有什么关系?
  • stackoverflow.com/help/on-topic - 具体来说:“程序员常用的软件工具”
  • 用户模式应用程序中的 For 循环和通常的 CPU 绑定计算不适合作为 VM 基准测试,因为它们在主机 CPU 上未经修改即可运行,无需管理程序的特别努力;您发现没有显着差异是正常的。您可能会发现更严重的瓶颈,例如做繁重的 IO。
  • Matteo,我制作了一个基准程序,该程序将使用 2 个线程对向量求和。该程序发现启用硬件虚拟化没有显着差异,但是当我禁用它时,VM 上的性能下降了 6 倍,这就是我发布这个问题的原因。

标签: virtual-machine virtualbox virtualization


【解决方案1】:

虚拟化非常复杂。现在机器上的硬件虚拟化(英特尔的VT-x 和AMD 的AMD-V)大大提高了整体虚拟化性能,但它只有助于部分虚拟化。大多数代码直接在硬件上执行。但是仍然存在需要在软件中模拟代码的情况。有很多技巧和技术可以提高性能和安全性以及解决硬件限制的问题,因为 x86 平台从未被设计为虚拟化。

我建议您查看 Virtualbox 的手册,其中描述了许多技术细节,特别是 Hardware vs. software virtualization 和后续章节。如果你对这些东西感兴趣,这里有很多有趣的读物。

此外,对虚拟化性能进行基准测试并不容易,因为它在很大程度上取决于该基准所做的工作。如果它完全只在 ring 3 (用户空间)中运行,它可能会直接在硬件上运行而无需管理程序拦截。这意味着它将具有与在真实硬件上运行时相似的性能。在另一个极端,如果它几乎一直在 ring 0(特权最高的内核空间)中运行,这意味着它将执行大量系统调用,管理程序将拥有大量工作和虚拟化可能会显着减慢速度。实际上,来宾系统调用不会在 ring 0 中运行,因为这样管理程序将失去对系统的整体控制)。相反,管理程序使用 ring 1,这根本不是普通使用的。详情请见Protection rings on Wikipedia

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2017-11-23
    相关资源
    最近更新 更多