我正在使用perf进行一些优化工作。通过使用perf script
显示我的性能记录并获得如下结果:
MyServer 13631 [015] 2611179.755027: probe_app:stat_timer: (52bbe0)
......
我编写了一个脚本来分析结果,需要将时间戳更改为时代时间戳(至少精确到秒)。
为此,我首先获取主机启动纪元时间戳
$ date -d "`uptime -s`" +%s
1562557105
并通过添加正常运行时间进行验证
$ cat /proc/uptime
2612552.50 36615651.34
开始纪元时间戳是正确的。
但是我发现perf时间戳记211179.755027不是自系统启动以来经过的秒数,正如文档所说,大约有100s +的错误。 exec“性能记录”时如何获取准确的时间戳?我尝试使用“ -T”,但似乎不起作用。
答案 0 :(得分:1)
perf
(或底层的perf_event_open
)使用的默认时钟并未真正记录-因此,我不必将其作为任何特定的时钟。幸运的是,perf
允许您使用-k
选项选择特定的时钟。通常,支持CLOCK_MONOTONIC
和CLOCK_MONOTONIC_RAW
。取决于事件和版本,其他时钟可能可用。
如果选择特定的时钟,则可以使用clock_gettime
获取匹配的时间戳。我不知道执行此from command line的简单方法,但是C程序可以。