虚拟机与物理主机的性能差异是什么?

aar*_*ich 19 linux performance virtualbox virtual-machine

在我工作的地方,我们使用 Debian Linux 发行版运行相对强大的 PC。然而,对于我们需要安装的某些程序,最好有 CentOS,它们将是我们的主要工作工具。为我们工作场所中的所有计算机更改操作系统是可能的,但我们正在尝试确定使用 VirtualBox 是否是为了简单起见的更好选择。

这一切都取决于以下几点。我们需要运行的程序是模拟器,它们是处理器密集型任务,每次启动模拟时可以轻松运行长达一个小时或更长时间。我们需要决定使用 Virtual Box 时的性能下降是否足以值得我们更改操作系统。

所以我的问题是,是否有人可以验证地告诉我在虚拟机中运行处理器密集型任务与在本机 PC 上运行它对性能有何影响?

谢谢。

Jon*_*art 16

对于数字运算程序(非常受 CPU 限制),VM 的性能损失应该几乎为零。指令直接在 CPU 上运行,这对于主机和虚拟机来说是一样的。

即使对于严肃的编译任务,性能差异也几乎不明显。我们在 Windows 上的 VMware 中运行 CentOS 虚拟机。

由于您在主机上运行 Linux,您可能还会考虑KVM(内核虚拟机)而不是 VirtualBox。它是一系列内核模块,在 Linux 中提供虚拟化服务,使用大多数现代 CPU 上可用的 Intel VT-x 虚拟化扩展。QEMU 使用 KVM 作为加速器直接在主机 CPU 上运行 x86 代码。

只需安装virt-manager即可试用。


Hen*_*nes 7

对此没有一个好的答案。这在很大程度上取决于您如何使用 VM 以及使用哪些程序。

例如,使用 VMWare(一种类型 2 虚拟机管理程序)和一个纯 CPU 绑定的程序产生几乎完全的 CPU 速度。如果我使用同一个虚拟机管理程序和一个有很多系统调用的程序,我的速度会很慢。

当您使用类型 1 管理程序(无来宾)操作系统时,情况也会发生变化。即使在这些之间,您也有很多变化。例如,Xen 支持 5(上周末 FOSDEM 上 Xen 讨论的 IIRC)模式。从硬件使用到准虚拟化。

回顾一下:根据要求,它可以从几乎没有减速到严重减速。


现在,如果我专注于 VirtualBox,那就是类型 2 的虚拟机管理程序。纯粹的 CPU 绑定程序应该没问题。


Jon*_*art 7

实际上,听起来 Docker 可能是您正在做的事情的更好选择。Docker 提供容器,它们是运行在同一内核之上的隔离沙箱。系统调用/IO 开销为零,因为您的容器内进程与主机上的进程没有什么不同。

由于您已经在运行 Linux,Docker 将是提供 CentOS 环境的好方法,而无需重新安装所有机器。

另外,请查看我的实用程序Scuba,它可以轻松地在 Docker 容器内运行诸如构建之类的东西。而不是跑步,make你会跑scuba make。就这样!