【问题标题】: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 以及 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,所以我可以直接在浏览器本身中以图形方式查看输出。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多