<...>-32578 [001] **133767.868869**: kfree: call_site=ffffffff810e6f06 ptr=(nil)
如何使trace-cmd
报告时间为纪元时间?默认情况下的时间是我认为自应用程序正常运行以来的时间。这是精确确定事件发生时间的要求。
trace-cmd list -O
选项也没有帮助。
答案1
本例中的时间133767.868869
是自 cpu 启动以来的时间(假设您没有更改通常挂载在 /sys/kernel/debug/tracing/trace_clock 的文件的值)。问题是您需要多少准确度the exact time of the event
。如果说到最接近的秒就可以了,那么您只需添加以下输出即可
date | cat > /dev/null # Make sure programs are in cache
set -- $(date +%s.%N) $(cat /proc/uptime)
echo "$1-$2" | bc
它计算出系统启动的时间。这假设您的时钟设置合理。
如果你想要更准确的东西那么你可能应该这样做
echo global > /sys/kernel/debug/tracing/trace_clock # Once only
date +"Time=%s.%N" > /sys/kernel/debug/tracing/trace_marker
多次,并将Time=
消息与时间戳进行比较,以估计值的偏移量以及存在的可变性。
一旦您知道要调整的量,您就可以进行一次性计算以查看特定事件何时发生,或者您可以使用 awk、perl、python 或 ... 编写脚本来调整输出中的列。