KDAB / hotspot

The Linux perf GUI for performance analysis.
4.1k stars 254 forks source link

android simpleperf support #224

Closed bylanhao closed 4 years ago

bylanhao commented 4 years ago

Your application is perfect in x86 arch, but in embedded, it has a issue to used. Can you develop analytics based on perf.script? Follow the steps of your document analysis to analyze the embedded perf.data, most of the time hotspot didn't work. And many Android app can use simpleperf to get perf script, it's hard to use hotspot to analysis android app.

milianw commented 4 years ago

Hey! Can you please tell me why you think hotspot doesn't work for the embedded use-case? Are you passing the correct paths to e.g. --sysroot - see hotspot --help for more information:

hotspot --help
Usage: hotspot [options] [files...]
Linux perf GUI for performance analysis.

Options:
  -h, --help               Displays help on commandline options.
  --help-all               Displays help including Qt specific options.
  -v, --version            Displays version information.
  --sysroot <path>         Path to sysroot which is used to find libraries.
  --kallsyms <path>        Path to kallsyms file which is used to resolve
                           kernel symbols.
  --debugPaths <paths>     Colon separated list of paths that contain debug
                           information.
  --extraLibPaths <paths>  Colon separated list of extra paths to find
                           libraries.
  --appPath <path>         Path to folder containing the application executable
                           and libraries.
  --arch <path>            Architecture to use for unwinding.

Quite a few people are using hotspot for embedded projects with arm architectures e.g. and it just works. So I wonder why it doesn't work for you?

bylanhao commented 4 years ago

hotspot --kallsyms kallsyms --sysroot root --debugPaths symbols/ --arch arm64 perf.data bad feature data: 0x7ffe2b6ac4e0 HEADER_TRACING_DATA with unexpected contentSize 2308 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 Segmentation fault (core dumped) root:/usr/hotspot# unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 6 unhandled event type 5 unhandled event type 6 unhandled event type 5 unhandled event type 5

When I use the Android simpleperf the hotspot is crash, if it can use perf script maybe prefect.

bylanhao commented 4 years ago

python run_simpleperf_on_device.py record -e cpu-clock -e sched:sched_switch -a --call-graph fp --duration 45

and I use this command to get the perf.data.

milianw commented 4 years ago

So the issue is a crash that occurs when you try to analyze the data as produced by simpleperf. To do anything about this, can you please provide me with a perf.data file recorded with simpleperf please?

mstange commented 4 years ago

Here's an example perf.data from simpleperf: simpleperf-20200425-perf.data (7.9 MB) And here's perf script-style text version of it, obtained with report_sample.py: simpleperf-20200425-report_sample.txt.zip (5.5 MB)

I obtained this profile by following the instructions from https://github.com/acreskeyMoz/simpleperf_for_geckoview_example. I was profiling a locally-built Fenix on a Moto G5.

milianw commented 4 years ago

The link to the text file references is the same as to the binary perf.data file. Can you get me a correct link please?

milianw commented 4 years ago

Please try with the latest AppImage from the continuous build once it finishes. You should be able to parse the simpleperf data files then.

Note that you'll have to provide the paths to the sysroot etc. to be able to resolve debug symbols.

mstange commented 4 years ago

I've updated the link in the comment.