评估Linux虚拟化解决scheme的最佳方式

我想在Linux虚拟化解决scheme(即Xen,KVM和OpenVZ)上运行一些基准testing,我正在考虑如何设置testing环境。 我目前的做法是:

  • build立一个裸露的服务器系统
  • 将所有3种解决scheme(内核)安装在同一个系统上,并对其进行设置(+ VM)
  • 启动一个特定的内核(禁用来自其他解决scheme的最终服务)并运行基准testing

这种方法是好的,还是应该将3个系统完全分开(3个完全独立的安装,每个安装一个解决scheme)?

附加问题:任何提示我应该运行什么样的基准? 我想到了一些编译(如Linux内核),ab(Apache基准)和OSDB(开源数据库基准)。 主要比较各个虚拟机的整体性能,I / O性能和响应时间。

在此先感谢,Mathias

testing应该尽可能接近你在生产中运行的方式。 因此,分别安装每个系统并进行testing。 这可能需要多次展平你的testing盒,但它会得到最干净的结果。 然后专注于创build您的testing用例。 有些在我头顶:

  • 多VMtesting在同一主机上运行多个VM。
  • 繁忙的虚拟机资源争用有一个虚拟机运行一些高CPU需求,在其他虚拟机运行其他testing,看看他们是如何受到影响。
    • 做同样的事情,但使用高磁盘I / O虚拟机,并查看其他虚拟机是如何受到影响的。
  • 多处理器效率如果你有硬件,运行多个虚拟CPU的虚拟机,并判断它是否有效使用(比如内核编译多个作业)。

从本质上说,脑力激荡边缘案例,围绕这些案例进行testing。 当一个虚拟机吝啬资源时会发生什么? pipe理程序如何处理资源的超额订阅? 一个虚拟机如何locking很难影响系统上的其他虚拟机?

我读过关于Anandtech.com在虚拟化方面所做的基准testing:

并阅读VMware为什么不允许EULA中的基准testing。 他们给出了一些很不错的基准testing的例子:

http://blogs.vmware.com/virtualreality/2009/03/a-big-step-backwards-for-virtualization-benchmarking.html

强烈build议在testing的每个迭代中只在testing环境中设置一个虚拟机pipe理程序来执行testing。 以这种方式分离虚拟机pipe理程序将减less不必要的交互的可能性; 特别是对于虚拟化的虚拟机。

考虑devise一个额外的testing套件,可以为您的每个有限资源findhypervisor的突破点:

  • 中央处理器
  • 记忆
  • I / O带宽

你想要find的是在病理学点之前和之后所经历的行为特质; 以及是否有某些主机虚拟机有某种forms的恢复。

例如,当pipe理程序过载时, 你还能closures虚拟机吗?