这是一个很好的问题!这是第一道菜。
能够登录多个级别(例如:调试,警告等)。
hslogger很容易成为最受欢迎的日志记录框架。
能够收集和共享有关程序正在执行的工作类型以及该工作需要花费多长时间的度量标准/统计信息。理想情况下,收集的度量可以以与诸如Ganglia的常用监视工具兼容的格式来使用,或者可以被忽略。
我不知道任何标准化的报告工具,但是,+RTS -s我过去所做的事情是从流中提取报告(或通过分析输出标志)。
$ ./A +RTS -s
64,952 bytes allocated in the heap
1 MB total memory in use
%GC time 0.0% (6.1% elapsed)
Productivity 100.0% of total user, 0.0% of total elapsed
您也可以以机器可读的格式获取它:
$ ./A +RTS -t --machine-readable
[("bytes allocated", "64952")
,("num_GCs", "1")
,("average_bytes_used", "43784")
,("max_bytes_used", "43784")
,("num_byte_usage_samples", "1")
,("peak_megabytes_allocated", "1")
,("init_cpu_seconds", "0.00")
,("init_wall_seconds", "0.00")
,("mutator_cpu_seconds", "0.00")
,("mutator_wall_seconds", "0.00")
,("GC_cpu_seconds", "0.00")
,("GC_wall_seconds", "0.00")
]
理想情况下,您可以通过套接字连接到正在运行的GHC运行时,并以交互方式查看这些GC统计信息,但是目前这并非易事(需要将FFI绑定到“ rts / Stats.h”接口)。您可以使用以下方式附加到流程ThreadScope并监视GC和线程行为。
类似的标记可用于增量的,记录的时间和空间分析,可用于监视(例如,这些图可以增量构建)。
hpc通过Tix类型收集了有关程序执行的大量统计信息,人们编写了工具来按时间片记录正在执行的代码。
是可配置的,理想情况下是通过这样的系统进行的:该系统允许更新正在运行的程序中配置的属性,而无需重新启动所述程序。
有几种工具可用于此目的,您可以执行xmonad样式的状态重新加载;或通过plugins*软件包或进入代码热交换hint。其中一些比其他更具实验性。
可复制的部署
Galois最近发布了cabal-dev,它是用于进行可复制构建的工具(即,对范围进行了限定和控制)。