uelordi
uelordi

Reputation: 2209

Simpleperf cpu-cycles not supported in Android devices

I'm trying to make profiling with simpleperf in my Android ndk application but when I type simpleperf record command, the system reports this message:

simpleperf E 02-08 13:34:47 15380 15380 event_selection_set.cpp:68] Event type 'cpu-cycles' is not supported by the kernel

I read this tutorial: https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md

and I followed these steps:

  Make android debuggable=true in the manifest. 

  adb shell setprop security.perf_harden 0 

  adb shell 

  shell@mako:  run-as com.mysample.test

  adb push bin/android/arm/simpleperf /data/local/tmp

  shell@mako: cp /data/local/tmp/simpleperf .

  shell@mako: ./simpleperf record -p  12083 --duration 30

Is that means that the nexus 4 cpu-cycles are not supported in the hardware or may i have not activated a specific security flag on the kernel?

I am using rooted nexus 4 device.

Ndk version 13b.

Android version: 5.1

Kernel version: 3.4.0-perf-gf75bb4f

pd: I tagged perf tag because of the similarity with perf.

Thanks in advance.

Unai.

Upvotes: 2

Views: 2615

Answers (1)

Yabin Cui
Yabin Cui

Reputation: 62

Nexus 4 supports cpu-cycles event. I can't find the kernel version f75bb4f in git history, so I didn't test the same kernel. I have tested by flashing 5.1.1 (LMY48T) on nexus 4, using simpleperf in ndk-r13b, and it works. So I suspect the kernel you use disables perf events, and you can fix this by flashing a new image in https://developers.google.com/android/images#occam.

Upvotes: 2

Related Questions