为什么perf无法收集任何样品?

时间:2015-09-13 05:34:13

标签: linux perf

sudo perf top显示"事件:0周期"。

sudo perf record -ag sleep 10显示

[ perf record: Woken up 1 time to write data ]
[ perf record: Captured and wrote 0.154 MB perf.data (~6725 samples) ]

但是,sudo perf report显示" perf.data文件没有样本!"。我还检查了记录的perf.data并确认其中没有任何样品。

系统是" 3.2.0-86-virtual#123-Ubuntu SMP Sun Jun 14 18:25:12 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux"。 perf版本3.2.69

赞赏输入。

1 个答案:

答案 0 :(得分:1)

空闲的虚拟化系统上可能没有真正的样本(你的linux内核版本有" -virtual"后缀);或者可能无法访问默认使用的硬件计数器(-e cycles)。

尝试分析一些真实的应用程序,例如

 echo '2^2345678%2'| sudo perf record /usr/bin/bc

同时检查-e cpu-clock等软件计数器:

 echo '2^2345678%2'| sudo perf record -e cpu-clock /usr/bin/bc

您可以尝试perf statperf stat -d)使用相同的示例来查找系统中哪些基本计数器真正增加:

 echo '2^2345678%2'| sudo perf stat /usr/bin/bc

关于"(~6725个样本)"输出 - 性能记录不会对其输出中的样本进行计数,只是估计它们的计数,但这种估计始终是错误的。任何perf.data文件都有一些固定的部分没有任何样本,它可能在系统范围模式下使用数十kb;并且估计错误地将该部分计为包含一些平均长度的事件。