虚拟机内基准测试的可靠性?

时间:2008-12-26 18:02:01

标签: performance virtualization benchmarking

虚拟机中在虚拟机中执行的基准测试有多可靠,而不是真正的硬件?

让我们剖析具体情况。假设我们想要对最近代码更改的性能影响进行基准测试。为简单起见,假设工作负载完全受CPU限制(尽管IO绑定和混合工作负载也很重要)。假设机器在VirtualBox下运行,因为它是最好的;)

假设我们测量了原始代码和新代码,新代码的速度提高了5%(在虚拟机中进行基准测试时)。我们能否安全地宣称它在真实硬件上的速度至少要快5%?

更重要的是,假设新代码慢了3%。我们是否可以完全确定在真实硬件上它会比3%或更少更慢,但绝对不会更差超过3%?

更新:我最感兴趣的是你的战场结果。 IE浏览器。你可以见证一个案例,当VM中速度慢10%的代码在真实铁上执行速度提高5%,反之亦然?或者它总是一致的(即,如果它在VM中更快/更慢,它在实际机器上总是按比例更快/更慢)?到目前为止,我的或多或少是一致的;至少,总是朝着同一个方向前进。

4 个答案:

答案 0 :(得分:1)

如果您要将VM上的结果与未在VM上运行的结果进行比较,那么结果是不可信的。

另一方面,如果两个测试都在同一个环境中运行,那么结果是可信的。在VM内部的两个测试都会变慢,但差异应该仍然可信。

答案 1 :(得分:1)

考虑到所有事情,使用Fair Witness主体,您可以断言的是应用程序在VM中的执行情况,因为这是您实际测量的内容。

现在,如果您希望尝试根据环境推断您所观察到的内容,那么,假设您正在运行本机VM(例如,对比模拟的VM,例如x86上的PPC),则CPU绑定任务是CPU即使在VM中绑定任务,因为CPU正在完成大部分繁重工作。

可以说可能存在一些可以区分VM和本机应用程序的内存管理问题,但是一旦内存被正确映射,我不认为VM和CPU之间的CPU绑定运行时间会有很大差异。本机。

因此,我认为,当在本机上运行时,在VM上运行时,从应用程序的一个实例到另一个实例的性能更改会发生类似的性能更改,特别是对于CPU繁重的应用程序,这是公平的。< / p>

但是,我不认为你可以公平地说“你知道”,除非你真正在正确的环境中测试自己。

答案 2 :(得分:1)

我认为VM没有什么特别之处。即使在“真正的”机器上,您仍然在运行虚拟内存并与其他进程共享CPU,因此需要考虑类似的注意事项。

答案 3 :(得分:0)

在测试和生产环境之间获得可靠性能结果的 ONLY 方法是运行IDENTICAL硬件和软件。一直到硬件版本和软件补丁级别。

否则你几乎在浪费你的时间。

作为一个例子,一些记忆棒比其他记忆棒表现更好,这可能很容易在其他相同的盒子上占据5%的吞吐量差异。

关于软件,VM软件总是会产生影响;某些操作可能比其他操作受到的影响更大,这取决于许多不同的因素,没有可能的方法来比较它们。