在虚拟服务器,Xen或VirtualBox中,CPU和内存使用率高的情况下哪个性能更好?
Xen通常会比VirtualBox执行得更好,因为VirtualBox以guest虚拟机操作系统不知道它在虚拟环境中运行的方式运行guest虚拟机操作系统。 或者换句话说,来宾操作系统不会被修改为虚拟运行。 因此,VirtualBox必须“捕捉”内核types指令,运行一些自定义代码,然后将控制返回给客户机。 它可以使用英特尔和AMD提供的硬件虚拟化支持,但即使如此,开销也是相加的。
Xen同时确保客户操作系统重新编译,以适应Xen模型。 所以控制从客户操作系统平滑地stream向pipe理程序,而不必假装客户操作系统可以直接访问硬件。
有关相当多的虚拟化技术(包括性能testing数据)的概述,请阅读本报告 。 它只涉及Linux,但涵盖Linux-Vserver,Xen,OpenVZ,KVM,VirtualBox和QEMU。 Linux-Vserver和Xen通常是performance最好的,但是阅读报告以查看不同的工作负载。
综上所述,VirtualBox可能会超越Xen。 如果你的客户操作系统有一个graphics窗口层,那么VirtualBox对此有很好的支持,特别是如果你在客户操作系统中安装了一些特殊的VirtualBox组件。
最后你应该知道,Xen只会运行一个修改的客户操作系统。 它不能运行未经修改的客户操作系统。
哈米什·唐纳的回答是错误的最后一点。 Xen可以运行未修改的guest虚拟机,但是必须作为完全虚拟化的HVM guest虚拟机来运行。 这样做需要主机具有支持Intel VT或支持AMD-V的CPU的硬件虚拟化支持。
Xen和Virtualbox都有一个地方,但它们是两种不同types的pipe理程序。 Xen是一个Type 1pipe理程序,其中Virtualbox是一个Type 2pipe理程序。 types1的虚拟机pipe理程序往往是在服务器环境中find的types2虚拟机pipe理程序更倾向于运行与桌面交互的多个操作系统。 我认为这主要是由于它们简单和更好的桌面集成。 然而,types2虚拟机pipe理程序下的客户远离底层硬件,并且往往比types1虚拟机pipe理程序下的客户更慢。 与所有事情一样,总是会有一个例外。
我只能讲Xen,因为我只使用Virtualbox虚拟化我的Mac桌面上的Windows机器。
正如其他人所提到的,Xen(和基于Xen的XenServer)使用半虚拟化内核,显着提高了Cpu和内存绑定的性能特征。 但是,这仅适用于具有专用内核的Linux主机。 你需要一个Xen-“启用”的内核来利用这个优势。
此外,Windows不支持以这种方式进行虚拟化,但是各自的CPU上的Intel VT和AMD-V扩展“捕捉”了Windows,并使其以半虚拟化的方式运行。 Windows 2003和Windows 2000从来没有意识到他们正在运行虚拟化,而Windows 2008则是检测到这一点,并以所谓的“开明”模式运行,这可以与Linux的“半虚拟化”模式相比较。