virtual-machine - Type-2 管理程序的性能损失是否相当大?

标签 virtual-machine virtualbox virtualization

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

A Type 1 hypervisor runs directly on the hardware; a Type 2 hypervisor runs on another operating system, such as Linux

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

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

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

那么问题来了,现在type 2 hypervisor真的有性能损失吗,尤其是考虑到它们可以实现硬件虚拟化?

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

最佳答案

虚拟化非常复杂。现在机器上的硬件虚拟化(Intel 的 VT-x 和 AMD 的 AMD-V )大大提高了整体虚拟化性能,但它只对部分虚拟化有帮助。大多数代码直接在硬件上执行。但仍有一些情况需要在软件中模拟代码。有许多提高性能和安全性的技巧和技术以及硬件限制的解决方法,因为 x86 平台从未设计为虚拟化。

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

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

关于virtual-machine - Type-2 管理程序的性能损失是否相当大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23894880/

相关文章:

Python更改屏幕分辨率虚拟机

Azure,没钱时关闭所有虚拟机

c++ - Red Pill检测虚拟化

PHP网站,我应该开发成Linux发行版而不是Windows吗?

linux - 安装 Mirantis Openstack 时出错

docker - 容器突然终止并发出警告 "cleaning up after killed shim"

service - 如何在完全后台启动后像服务一样运行 "Oracle VirtualBox (VBOX)" "Microsoft Windows (WIN)"

macos - VMWare融合: Change IP of vmnet8

laravel - 如何在不清除预先存在的数据库的情况下向 Homestead 2.0 添加新站点?

linux - Virtualbox: "USB device in use by someone else"错误,如何让(mac)主机放开?