我想在 linux 虚拟化解决方案(即 Xen、KVM 和 OpenVZ)上运行一些基准测试,我目前正在考虑如何设置测试环境。我目前的方法如下:
- 搭建裸服务器系统
- 在同一系统上安装所有 3 个解决方案(内核)并设置它们(+ VM)
- 启动特定内核(禁用其他解决方案的最终服务)并运行基准测试
这种方法可以吗,还是我应该将 3 个系统完全分开(有 3 个完全独立的安装,每个安装只安装一个解决方案)?
附加问题:任何提示我应该运行什么样的基准?我考虑了一些编译(例如linux内核)、ab(Apache Benchmark)和OSDB(开源数据库基准)。比较应该主要关注单个虚拟机的整体性能、I/O 性能和响应时间。
在此先感谢, 马蒂亚斯
我已经阅读了 Anandtech.com 在虚拟化方面所做的基准测试:
并阅读 VMware 为何不允许在其 EULA 中进行基准测试。他们给出了一些糟糕的基准测试的非常好的例子:
http://blogs.vmware.com/virtualreality/2009/03/a-big-step-backwards-for-virtualization-benchmarking.html
测试应该尽可能接近你在生产中的运行方式。因此,分别安装每个系统并进行测试。这可能需要多次展平您的测试盒,但它会给出最干净的结果。然后专注于创建您的测试用例。一些在我脑海中的:
从本质上讲,头脑风暴边缘案例并围绕这些案例构建测试。当虚拟机占用资源时会发生什么?管理程序处理资源超额订阅的能力如何?一个虚拟机被硬锁定如何影响系统上的其他虚拟机?
强烈建议在测试环境中为每次测试迭代只设置一个管理程序来执行测试。以这种方式隔离管理程序将减少不必要的交互的可能性;特别是对于半虚拟化的 VM。
考虑设计一套额外的测试,为您的每个有限资源找到虚拟机管理程序的断点:
您想要找到的是在病态点之前和之后所经历的行为特质;以及某些主机虚拟机是否有某种形式的恢复。
例如,当管理程序超载时;你还能关闭虚拟机吗?