无法将perf时间戳与系统纪元时间对齐

时间:2019-08-07 09:38:57

标签: linux performance perf

我正在使用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”,但似乎不起作用。

1 个答案:

答案 0 :(得分:1)

perf(或底层的perf_event_open)使用的默认时钟并未真正记录-因此,我不必将其作为任何特定的时钟。幸运的是,perf允许您使用-k选项选择特定的时钟。通常,支持CLOCK_MONOTONICCLOCK_MONOTONIC_RAW。取决于事件和版本,其他时钟可能可用。

如果选择特定的时钟,则可以使用clock_gettime获取匹配的时间戳。我不知道执行此from command line的简单方法,但是C程序可以。