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

Linux 为什么perf无法收集任何样本?,linux,perf,Linux,Perf,sudo perf top显示“事件:0个周期” sudo性能记录-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文件没有样本!”。我还检查了记录的性能数据,确认其中没有任何样本 该系统是“3.2.0-86-virtu

sudo perf top
显示“事件:0个周期”

sudo性能记录-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文件没有样本!”。我还检查了记录的
性能数据
,确认其中没有任何样本

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


非常感谢您的输入。

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

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

 echo '2^2345678%2'| sudo perf record /usr/bin/bc
同时检查软件计数器,如
-e cpu时钟

 echo '2^2345678%2'| sudo perf record -e cpu-clock /usr/bin/bc
您可以使用相同的示例尝试
perf stat
perf stat-d
),以查找系统中哪些基本计数器真正递增:

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

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

perf.data的文件大小是多少?您是如何使用perf report签出以文本形式转储跟踪的?文件大小看起来正常:-rw------1根根根146144 Sep 13 22:28 perf.data