性能加起来不等于 100%

Perf doesn't add up to 100%

我正在尝试使用 perf 工具测量 Android 手机 phone 的 cpu 使用情况。因为我的 phone (Redmi Note 3) 没有 perf 工具。我使用了 google 提供的 simpleperf 工具。我使用 perf record -e cpu-cycles -a 记录了系统范围 cpu 的使用情况。 perf 报告的 cpu 使用开销必须增加到 100%,但我从 phone 获得的 cpu 使用报告在分析 10 分钟后仅增加了 12%。我在将我的 phone 置于闲置状态并杀死所有应用程序时进行了概要分析。

而且当我分析 1 分钟时,它增加到大约 70%。

是否异常?还是 perf 不报告 cpu 的空闲时间,所以我只剩下 cpu 使用量的 12%?

我发现这是因为perf中的浮点(精度)错误。由于当我 运行 perf 记录足够长的时间时 perf 只计算高达 0.0x% 的开销,即使开销小于 0.01% 堆积并且在 30 分钟后它们加起来大约 50% 所以报告的开销只会相加最多 50%,其余 50% 来自 0.00x%,向下舍入为 0.00%。