虚拟机的基准测试,分析

时间:2011-09-15 06:53:54

标签: php benchmarking vmware profiler

在许多不同的来源上,您可以阅读有关虚拟机中的时间问题的信息。因为每个基准都依赖于时间保持我不知道如何解释例如apache基准测试或xdebug profiler在vmware上的结果以及它们的可信度。

http://communities.vmware.com/docs/DOC-5581

VMware建议为性能测试构建一个特殊的vm。此外还有许多提示似乎是解决方法(安装VMware Tools,特殊配置等)。

特别是在涉及磁盘i / o性能问题时,我非常关心结果的准确性。 Rasmus Lerdorf在drupalcon上谈到了这一点,他说他的VMware基准测试中有一些关于stat调用的性能提升不明显,因为VMware有特殊的磁盘缓存,你无法与物理磁盘相比:

http://www.nowpublic.com/tech-biz/rasmus-lerdorf-simple-hard-drupalcon-2008-key-note

毕竟,我不确定VMware是否能够进行任何基准测试。

2 个答案:

答案 0 :(得分:0)

没有vmware-tools,磁盘缓存和性能降低可能是真的 但我发现Vmware在开发中非常有用,因为我有一个Linux虚拟机作为我的开发服务器,而我在Windows中编码。
我可以轻松地在我的代码中进行基准测试并找到潜在的瓶颈。

它可能不完美,可能会遗漏一些东西,但它仍然比设置专用的Linux机箱容易且便宜。

<强>更新
ApacheBench是测试可伸缩性和原始RequestPerSeconds指标的好工具。

但是为了在我的PHP脚本中找到瓶颈并测试代码优化效果,我总是使用XDebug以及WebgrindWinCacheGrind来查看分析器输出。

如果你有一个linux盒子你可以使用pecl install xdebug安装XDebug,或者对于windows你可以在xdebug网站上找到预建的二进制文件。

我为Xdebug使用以下配置

[xdebug]
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/opt/lampp/htdocs/profiles"
xdebug.profiler_output_name = "cachegrind.out.%s.%t"
带有profiler_enable_trigger

我可以通过传递XDEBUG_PROFILE作为查询字符串参数来有选择地进行分析。
我也设置了webgrind,所以我可以直接在浏览器中查看输出。

答案 1 :(得分:0)

很大程度上取决于你想要做什么。

  1. 只需保留测量值以查找回归
  2. 查找可以修复以提高性能的时间耗尽
  3. 许多人认为这些是相同的,但我认为这来自实际做的有限经验(2)。

    我做的方式(2)不是测量,而是在几个随机时间点询问发生了什么以及为什么。 为此,如果它在虚拟机上,它并不重要。 如果它做了偷偷摸摸的事情需要很长一段时间,你会看到它是否在虚拟机上。 确切的分数无关紧要。揭露偷偷摸摸的活动是最重要的。

    这是example in python,但您可以使用任何语言进行操作。