如何提高性能结果的精度
Posted
技术标签:
【中文标题】如何提高性能结果的精度【英文标题】:How to Increase precision of perf result 【发布时间】:2020-02-14 19:07:16 【问题描述】:我正在使用 perf 来分析 C 库。但是,它不会产生 %100 结果,因为它会将数字滚到 0 到 0.00 倍以下。由于调用数以千计,因此会影响整体结果。
有人知道如何设置精度吗?(我检查了 PERF-TRACE(1) gnu Linux 网站上的每个参数,但它不存在)
整体儿童的结果示例:
8.01% 0.11% baxter-wksp [kernel.kallsyms] [k] entry_SYSCALL_64_after_hwframe
7.80% 3.19% baxter-wksp [kernel.kallsyms] [k]
7.62% 0.00% baxter-wksp [unknown] [k] 0000000000000000
【问题讨论】:
您运行了什么perf
命令来检索上述结果?
我用“sudo perf record -g”记录,然后用“sudo perf report --children”解压txt文件
【参考方案1】:
没有允许更改perf report
结果精度的可调参数。
以最新的内核源代码为参考,正在计算性能报告输出中“children”的overhead
值here。
如您所见,
case CCVAL_PERCENT:
default:
if (total)
percent = period * 100.0 / total;
return percent_color_fprintf(fp, "%.2f%%", percent);
打印开销百分比的规范固定为小数点后 2 位小数精度。这需要修改内核源代码以允许在perf report
输出中显示任何适当的精度。
【讨论】:
linux/v5.5.5/source/tools/perf/util/callchain.c
是内核源代码树的一部分,但它被编译到用户空间 perf
可执行文件中。您可以修改它并构建您自己的perf
二进制文件,而无需重新编译您的内核。
是的,确实!只需构建我们自己的 perf
二进制文件就足够了。
并且构建 perf 不需要完整的内核源代码,make perf-targz-src-pkg
将为独立 perf 构建生成 tar gz;并且那个不错的网站生成了几个 targz:mirrors.edge.kernel.org/pub/linux/kernel/tools/perf以上是关于如何提高性能结果的精度的主要内容,如果未能解决你的问题,请参考以下文章
性能测试中,如何把系统 TPS 从 100 提高到 10000?