I am using perf 3.0.4 on ubuntu 11.10. Its record command works well and displays on terminal 256 samples collected. But when I make use of perf report , it gives me the following error:
perf.data file has no samples
I searched a lot for the solution but no success yet.
This thread has some useful information: http://www.spinics.net/lists/linux-perf-users/msg01436.html
It seems that if you are running in a VM that does not expose the PMU to the guest, the default collection (-e cycles
) won't work. Try running with -e cpu-clock
. According to that thread, the OP had the same problem also in a real host running Ubuntu 10.04, so it might solve it for you too...
Whenever I run into this on a machine where perf record
has worked in the past, it is because I have left something else running that uses the performance counters, e.g., I have perf top
running in another terminal tab.
In this case, it seems that perf record
simply doesn't record any PMU related samples.
The number of samples reported by the perf record
command is an approximation and not the correct number of events (see perf wiki here).
To get the accurate number of events, dump the raw file and use wc -l
to count then number of results:
perf report -D -i perf.data | grep RECORD_SAMPLE | wc -l
This command should report 0 in your case where perf report
says it can't find events.
Let us know more information about how you use perf record, which event are you sampling, which hardware, which program.
EDIT: you can try first to increase the sampling period or frequency with the -c
or -F
options
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With