threadscope功能

时间:2012-02-07 12:19:16

标签: haskell runtime

程序可以在运行时进行监控(可能需要管道事件日志)吗?或者只能在执行后查看事件日志。如果是后者,那么Haskell运行时的工作方式是否存在更深层次的原因?

编辑:我对运行时tbh知之甚少,但考虑到dflemstr的响应,我很好奇通过添加事件监视运行时选项来降低性能的程度和方式。我记得在RWH他们提到rts必须增加成本中心,但我并不完全确定这种东西有多贵。

2 个答案:

答案 0 :(得分:1)

如果要在应用程序运行时监视应用程序的性能,可以使用the ekg package中所述的this blog post。它不像ThreadScope那样详细,但它可以完成Web服务的工作。

要获取有关运行时正在执行的操作的实时信息,可以使用dtrace程序捕获某些GHC运行时探针发布的动态事件。如何做到这一点在this wiki page中列出。然后,您可以使用此信息汇总更一致的事件日志。

答案 1 :(得分:1)

直接的答案是,不,这是不可能的。并且,不,没有理由,除了到目前为止还没有人完成所需的工作。

我认为这主要是

的问题
  1. 修改ghc-events以便它支持以块为单位读取事件日志并提供部分结果。也许把它移植到attoparsec会有帮助吗?

  2. Threadscope必须将其内部树数据结构更新为新的数据流。

  3. 没什么太难的,但有人需要这样做。我想我已经听过有关添加此功能的讨论......所以最终可能会发生这种情况。

    编辑为了说清楚,没有任何真正的原因可以降低性能,超出事件日志或成本中心分析的效果。