如何将perf采集的task-clock perf-event值转换为秒或毫秒?
perf record采集的task-clock事件计数值转换为时长的方法
可以直接转换,perf中task-clock事件的计数值单位固定为纳秒,直接做单位换算即可:
- 转换为毫秒:
task-clock计数值 / 1000000 - 转换为秒:
task-clock计数值 / 1000000000
示例计算
你给出的perf record输出中task-clock总计数约为14999985,代入计算:
时长(毫秒)= 14999985 ÷ 1000000 ≈ 15ms 时长(秒)= 14999985 ÷ 1000000000 ≈ 0.015s
补充说明
- 无需使用采样数(你示例中的45)自行计算总计数,perf输出的
Event count (approx.)已经是统计后的准确总数值,直接使用即可。 - 如果需要验证单位正确性,可以自己用已知时长的程序测试:执行
perf record -e task-clock:u sleep 1,再用perf report查看输出的task-clock总计数,会发现数值接近1e9(即1秒),即可确认单位为纳秒。 - 你给出的两次测试结果时长有差异,大概率是两次运行的perf配置、程序输入参数存在区别,和换算逻辑无关。
内容的提问来源于stack exchange,提问作者user3156262
相关产品推荐
相关产品推荐

