我正在使用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
开始纪元时间戳是正确的。
但是我发现性能时间戳 211179.755027 不是自文档所述系统启动以来经过的秒数,有一些关于 100s+ 的错误。如何在执行"性能记录"时获得准确的时间戳?我尝试了"-T",但它似乎不起作用。
perf
(或底层perf_event_open
(使用的默认时钟实际上没有记录 - 所以我不一定依赖它是任何特定的时钟。幸运的是,perf
允许您使用-k
选项选择特定的时钟。通常支持CLOCK_MONOTONIC
和CLOCK_MONOTONIC_RAW
。其他时钟可能可用,具体取决于事件和版本。如果选择特定时钟,则可以使用 clock_gettime
获取匹配的时间戳。我不知道从命令行执行此操作的简单方法,但是 C 程序可以。