【问题标题】:EProf Erlang ProfilingEProf Erlang 分析
【发布时间】:2013-01-09 17:09:42
【问题描述】:

我正在尝试使用 eprof 分析 Erlang 应用程序。结果表明大部分时间都花在了 dict 模块上,虽然我最感兴趣的 profiling 模块并没有直接使用 dict,它的依赖项看起来有点像这样:

A-- B - dict
 |- C - dict

A 是正在运行的进程(一个 gen_server)并使用模块 B 和 C,它们都使用 dict。如何判断哪个模块使用 dict 最多?

【问题讨论】:

  • 您可以尝试调整两个模块之一来使用 orddict 吗?如果您尝试每种方式(B/dict + C/orddict,然后是 B/orddict + C/dict),您可能有足够的信息来回答问题。
  • 有趣的方法,但我设法通过使用 fprof 来解决这个问题,而无需更改代码,它显示了函数(包括它的调用)和其他有用的东西,如 gc 和进程暂停。留下这个问题以防万一有人要添加任何其他内容。
  • 你可以尝试使用this escript我写的将fprof输出转换为callgrind输出并用kcachegrind或类似的东西可视化它
  • 这听起来很棒,你知道任何基于 gnome 的 GUI 吗?
  • 我不知道任何基于 gnome 的替代方案,但我在 gnome 上运行 kcachegrind 就好了。

标签: erlang


【解决方案1】:

为了解决类似的问题,我创建了从 dbg 跟踪格式到 callgrind 格式的转换器。它帮助我使用 kcachegrind 作为具有时间成本信息的函数调用层次结构的可视化工具。

https://github.com/virtan/eep

这是一个帮助查找时间花费的视图示例 https://raw.github.com/virtan/eep/master/doc/sshot6.png

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2014-03-16
    • 2015-09-04
    相关资源
    最近更新 更多