perf.data文件中没有样本数据。

19

我在 Ubuntu 11.10 上使用 perf 3.0.4。它的 record 命令能够正常运行并显示收集的 256 个样本。但当我使用 perf report 命令时,会出现以下错误:

perf.data file has no samples

我对这个问题进行了很多搜索,但尚未取得成功。


请提供您用于记录事件的命令。 - Manuel Selva
2
你解决了你的问题吗? - Manuel Selva
只是为了提供另一个错误发生的可能原因:它可能是因为内核中未启用所请求的事件(https://bugzilla.kernel.org/show_bug.cgi?id=207297#c1)。例如,如果您记录了`sched:`事件之一,则必须设置`sudo sysctl kernel.sched_schedstats=1`。 - Hi-Angel
3个回答

17

这个帖子包含一些有用的信息:http://www.spinics.net/lists/linux-perf-users/msg01436.html

如果你正在运行不将PMU暴露给客户机的虚拟机中,则默认的收集指令(-e cycles)将无法工作。尝试使用 -e cpu-clock 运行。根据该线程,OP在运行Ubuntu 10.04的实际主机上也遇到了同样的问题,因此这种方法可能也适用于你...


2
谢谢!这对我解决火焰图(依赖于perf)的问题有所帮助。希望我的评论提到火焰图能帮助其他人找到这个主题。 - John Hart
那并没有帮助我,但感谢您指出问题可能是它在虚拟机中运行! - lucidbrot

7
无论何时,当我在曾经可以正常运行 perf record 的机器上遇到这个问题时,通常是因为我还在运行其他使用性能计数器的程序,例如,我在另一个终端选项卡中运行了 perf top
在这种情况下,似乎 perf record 根本没有记录任何与 PMU 相关的样本。

7
perf record命令报告的样本数是一个近似值,而不是正确的事件数量(请参见这里的 perf wiki)。要获得准确的事件数,请转储原始文件并使用 wc -l 计算结果的数量:

perf report -D -i perf.data | grep RECORD_SAMPLE | wc -l

在您的情况下,此命令应报告为 0 ,其中 perf report 表示找不到事件。请提供更多关于您如何使用 perf record 的信息,例如采样的事件,硬件和程序等。
编辑:您可以尝试使用 -c -F 选项来先增加采样周期或频率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接