perf.data文件没有样本

时间:2014-01-16 07:06:34

标签: profiling perf

我在ubuntu 11.10上使用perf 3.0.4。它的记录命令运行良好,并在终端显示256个样本收集。但是,当我使用性能报告时,它会给我以下错误:

perf.data file has no samples

我搜索了很多解决方案,但还没有成功。

3 个答案:

答案 0 :(得分:8)

此主题包含一些有用的信息:http://www.spinics.net/lists/linux-perf-users/msg01436.html

似乎如果您在未将PMU公开给guest虚拟机的VM中运行,则默认集合(-e cycles)将不起作用。尝试使用-e cpu-clock运行。根据该线程,OP在运行Ubuntu 10.04的真实主机中也有同样的问题,所以它也可能为你解决...

答案 1 :(得分:5)

perf record命令报告的样本数是近似值,而不是正确的事件数(see perf wiki here)。

要获得准确的事件数,请转储原始文件并使用wc -l计算结果数量:

  

perf报告-D -i perf.data | grep RECORD_SAMPLE | wc -l <​​/ p>

perf report表示无法找到事件的情况下,此命令应报告0。

让我们了解更多关于如何使用perf记录的信息,您正在采样哪个事件,哪个硬件,哪个程序。

编辑:您可以先尝试使用-c-F选项增加采样周期或频率

答案 2 :(得分:1)

每当我在let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { // check for fundamental networking error print("error=\(error)") return } if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors print("statusCode should be 200, but is \(httpStatus.statusCode)") print("response = \(response)") } let responseString = String(data: data, encoding: .utf8) print("responseString = \(responseString)") } task.resume() 曾经工作过的机器上遇到此问题时,这是因为我留下了一些使用性能计数器的正在运行的东西,例如,我将perf record运行在另一个机器上终端标签。

在这种情况下,似乎perf top根本没有记录任何与PMU相关的样本。