首页 > 解决方案 > 如何提高性能结果的精度

问题描述

我正在使用 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

标签: profilingprecisionperf

解决方案


没有允许更改perf report结果精度的可调参数。

以最新的内核源代码为参考,overhead性能报告输出中“children”的值正在计算here

正如你在这里看到的,

    case CCVAL_PERCENT:
    default:
        if (total)
            percent = period * 100.0 / total;
        return percent_color_fprintf(fp, "%.2f%%", percent);
    }

打印开销百分比的规范固定为小数点后 2 位小数精度。这需要修改内核源代码以允许在perf report输出中显示任何适当的精度。


推荐阅读