【问题标题】:Benchmarking, Profiling on Virtual Machines基准测试、虚拟机分析
【发布时间】:2011-09-15 06:53:53
【问题描述】:

在许多不同的来源中,您可以了解虚拟机中的计时问题。由于每个基准测试都依赖于时间,我不确定如何解释例如vmware 上的 apache benchmark 或 xdebug profiler 结果以及它们的可信度。

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

VMware 建议构建一个特殊的虚拟机进行性能测试。此外还有许多提示似乎是变通解决方案(安装 VMware Tools、特殊配置等)。

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

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

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

【问题讨论】:

  • 这是一个问题还是一个陈述?我不确定我是否在任何地方看到了问题......
  • 这是一个问题。我想了解更多有关 vms 中问题基准测试的信息,以及您是否可以相信结果。在每次运行 apache 基准测试时,我都会得到不同的结果,它们的差异高达 10%,对于分析器来说也是如此。当我没有明确的参考来比较时,我如何比较关于性能的代码更改?我的假设是 vmware 是原因,但我想知道其他人是否注意到了同样的问题。

标签: php benchmarking vmware profiler


【解决方案1】:

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

  1. 保持测量以寻找回归
  2. 找出可以解决的时间消耗问题以提高性能

许多人认为这些是相同的,但我认为这来自于实际做 (2) 的有限经验。

我做 (2) 的方式不是测量,而是在几个随机时间点询问正在发生的事情以及原因。 为此,它是否在虚拟机上并不重要。 如果它正在做一些需要花费大量时间的鬼鬼祟祟的事情,无论它是否在虚拟机上,您都会看到。 确切的分数无关紧要。揭露偷偷摸摸的活动才是最重要的。

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

【讨论】:

    【解决方案2】:

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

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

    更新
    ApacheBench 是测试可扩展性和原始 RequestPerSeconds 指标的好工具。

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

    如果您有 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,所以我可以直接在浏览器本身中以图形方式查看输出。

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多