【问题标题】:Haskell profiling for a fixed amount of time固定时间的 Haskell 分析
【发布时间】:2014-01-30 15:55:36
【问题描述】:

我目前正在尝试分析 Haskell 服务器。服务器永远运行,所以我只想要一个固定时间的分析报告。我尝试只运行程序 3 分钟,然后礼貌地要求它终止,但不知何故,haskell 分析器不遵守术语信号,并生成不完整的数据。

我的第一次尝试:

timeout --signal SIGTERM 3m ./actionsDemo +RTC -hc -RTS -p -K100M

有人知道如何巧妙地分析此服务器吗?

【问题讨论】:

  • 我相信任何终止 haskell 运行时的“请求”都会导致分析器不将其所有数据写入磁盘。你可以派生一个等待 3 分钟然后从内部关闭程序的线程吗?您的侦听器只需要对一些全局标志执行额外的检查。
  • 感谢您的建议,但我不想编辑我正在分析的代码 :)
  • 您是否对-p 分析、堆分析或两者都感兴趣?
  • 主要是堆分析,我想知道改变一些字符串代码对堆有什么影响。

标签: haskell profiling


【解决方案1】:

获取正在运行程序的堆配置文件的方法在here,第 5.5.3 节中有详细记录。简而言之,您只需删除最后一个“不完整”样本,然后照常进行。

还有一个相关的trac ticket 可以让 hp2ps 自己处理这个问题,但它似乎还没有准备好。

对于时间/分配分析,我没有答案。

【讨论】:

  • 是的,这也是我想出来的,但不幸的是它并没有解决问题,当我使用上述命令并删除不完整的行时,它只存储约 6 秒,而不是 3 分钟减去样本。
  • 这很奇怪。您是否尝试过手动编辑 .hp 文件?它对我有用。
  • 也许您可以发布文件的链接?当我运行-hc 配置文件时,默认情况下,我的文件每十分之一秒就有一个条目。
  • 今天测试过,我运行脚本 3 分钟,但只有大约 54 行输出,所以它并没有真正存储所有数据减去样本 (gist.github.com/windwarrior/32885ad1b0d3abb4a61b)。仍然使用相同的命令运行,但没有 -p
猜你喜欢
  • 1970-01-01
  • 2021-02-02
  • 2011-10-06
  • 2014-06-19
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 2013-08-22
  • 2012-07-20
相关资源
最近更新 更多