summaryrefslogtreecommitdiff
path: root/simpleperf/doc/scripts_reference.md
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/doc/scripts_reference.md')
-rw-r--r--simpleperf/doc/scripts_reference.md233
1 files changed, 0 insertions, 233 deletions
diff --git a/simpleperf/doc/scripts_reference.md b/simpleperf/doc/scripts_reference.md
deleted file mode 100644
index 746da76a..00000000
--- a/simpleperf/doc/scripts_reference.md
+++ /dev/null
@@ -1,233 +0,0 @@
-# Scripts reference
-
-## Table of Contents
-
-- [app_profiler.py](#app_profilerpy)
- - [Profile from launch of an application](#profile-from-launch-of-an-application)
-- [run_simpleperf_without_usb_connection.py](#run_simpleperf_without_usb_connectionpy)
-- [binary_cache_builder.py](#binary_cache_builderpy)
-- [run_simpleperf_on_device.py](#run_simpleperf_on_devicepy)
-- [report.py](#reportpy)
-- [report_html.py](#report_htmlpy)
-- [inferno](#inferno)
-- [pprof_proto_generator.py](#pprof_proto_generatorpy)
-- [report_sample.py](#report_samplepy)
-- [simpleperf_report_lib.py](#simpleperf_report_libpy)
-
-
-## app_profiler.py
-
-app_profiler.py is used to record profiling data for Android applications and native executables.
-
-```sh
-# Record an Android application.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative
-
-# Record an Android application with Java code compiled into native instructions.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative --compile_java_code
-
-# Record the launch of an Activity of an Android application.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative -a .SleepActivity
-
-# Record a native process.
-$ python app_profiler.py -np surfaceflinger
-
-# Record a native process given its pid.
-$ python app_profiler.py --pid 11324
-
-# Record a command.
-$ python app_profiler.py -cmd \
- "dex2oat --dex-file=/data/local/tmp/app-profiling.apk --oat-file=/data/local/tmp/a.oat"
-
-# Record an Android application, and use -r to send custom options to the record command.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative \
- -r "-e cpu-clock -g --duration 30"
-
-# Record both on CPU time and off CPU time.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative \
- -r "-e task-clock -g -f 1000 --duration 10 --trace-offcpu"
-
-# Save profiling data in a custom file (like perf_custom.data) instead of perf.data.
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative -o perf_custom.data
-```
-
-### Profile from launch of an application
-
-Sometimes we want to profile the launch-time of an application. To support this, we added --app in
-the record command. The --app option sets the package name of the Android application to profile.
-If the app is not already running, the record command will poll for the app process in a loop with
-an interval of 1ms. So to profile from launch of an application, we can first start the record
-command with --app, then start the app. Below is an example.
-
-```sh
-$ python run_simpleperf_on_device.py record
- --app com.example.simpleperf.simpleperfexamplewithnative \
- -g --duration 1 -o /data/local/tmp/perf.data
-# Start the app manually or using the `am` command.
-```
-
-To make it convenient to use, app_profiler.py supports using the -a option to start an Activity
-after recording has started.
-
-```sh
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative -a .MainActivity
-```
-
-### run_simpleperf_without_usb_connection.py
-
-run_simpleperf_without_usb_connection.py records profiling data while the USB cable isn't
-connected. Below is an example.
-
-```sh
-$ python run_simpleperf_without_usb_connection.py start \
- -p com.example.simpleperf.simpleperfexamplewithnative
-# After the command finishes successfully, unplug the USB cable, run the
-# SimpleperfExampleWithNative app. After a few seconds, plug in the USB cable.
-$ python run_simpleperf_without_usb_connection.py stop
-# It may take a while to stop recording. After that, the profiling data is collected in perf.data
-# on host.
-```
-
-## binary_cache_builder.py
-
-The binary_cache directory is a directory holding binaries needed by a profiling data file. The
-binaries are expected to be unstripped, having debug information and symbol tables. The
-binary_cache directory is used by report scripts to read symbols of binaries. It is also used by
-report_html.py to generate annotated source code and disassembly.
-
-By default, app_profiler.py builds the binary_cache directory after recording. But we can also
-build binary_cache for existing profiling data files using binary_cache_builder.py. It is useful
-when you record profiling data using `simpleperf record` directly, to do system wide profiling or
-record without the USB cable connected.
-
-binary_cache_builder.py can either pull binaries from an Android device, or find binaries in
-directories on the host (via -lib).
-
-```sh
-# Generate binary_cache for perf.data, by pulling binaries from the device.
-$ python binary_cache_builder.py
-
-# Generate binary_cache, by pulling binaries from the device and finding binaries in
-# SimpleperfExampleWithNative.
-$ python binary_cache_builder.py -lib path_of_SimpleperfExampleWithNative
-```
-
-## run_simpleperf_on_device.py
-
-This script pushes the simpleperf executable on the device, and run a simpleperf command on the
-device. It is more convenient than running adb commands manually.
-
-## report.py
-
-report.py is a wrapper of the report command on the host. It accepts all options of the report
-command.
-
-```sh
-# Report call graph
-$ python report.py -g
-
-# Report call graph in a GUI window implemented by Python Tk.
-$ python report.py -g --gui
-```
-
-## report_html.py
-
-report_html.py generates report.html based on the profiling data. Then the report.html can show
-the profiling result without depending on other files. So it can be shown in local browsers or
-passed to other machines. Depending on which command-line options are used, the content of the
-report.html can include: chart statistics, sample table, flamegraphs, annotated source code for
-each function, annotated disassembly for each function.
-
-```sh
-# Generate chart statistics, sample table and flamegraphs, based on perf.data.
-$ python report_html.py
-
-# Add source code.
-$ python report_html.py --add_source_code --source_dirs path_of_SimpleperfExampleWithNative
-
-# Add disassembly.
-$ python report_html.py --add_disassembly
-
-# Adding disassembly for all binaries can cost a lot of time. So we can choose to only add
-# disassembly for selected binaries.
-$ python report_html.py --add_disassembly --binary_filter libgame.so
-
-# report_html.py accepts more than one recording data file.
-$ python report_html.py -i perf1.data perf2.data
-```
-
-Below is an example of generating html profiling results for SimpleperfExampleWithNative.
-
-```sh
-$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative
-$ python report_html.py --add_source_code --source_dirs path_of_SimpleperfExampleWithNative \
- --add_disassembly
-```
-
-After opening the generated [report.html](./report_html.html) in a browser, there are several tabs:
-
-The first tab is "Chart Statistics". You can click the pie chart to show the time consumed by each
-process, thread, library and function.
-
-The second tab is "Sample Table". It shows the time taken by each function. By clicking one row in
-the table, we can jump to a new tab called "Function".
-
-The third tab is "Flamegraph". It shows the graphs generated by [inferno](./inferno.md).
-
-The fourth tab is "Function". It only appears when users click a row in the "Sample Table" tab.
-It shows information of a function, including:
-
-1. A flamegraph showing functions called by that function.
-2. A flamegraph showing functions calling that function.
-3. Annotated source code of that function. It only appears when there are source code files for
- that function.
-4. Annotated disassembly of that function. It only appears when there are binaries containing that
- function.
-
-## inferno
-
-[inferno](./inferno.md) is a tool used to generate flamegraph in a html file.
-
-```sh
-# Generate flamegraph based on perf.data.
-# On Windows, use inferno.bat instead of ./inferno.sh.
-$ ./inferno.sh -sc --record_file perf.data
-
-# Record a native program and generate flamegraph.
-$ ./inferno.sh -np surfaceflinger
-```
-
-## pprof_proto_generator.py
-
-It converts a profiling data file into pprof.proto, a format used by [pprof](https://github.com/google/pprof).
-
-```sh
-# Convert perf.data in the current directory to pprof.proto format.
-$ python pprof_proto_generator.py
-$ pprof -pdf pprof.profile
-```
-
-## report_sample.py
-
-It converts a profiling data file into a format used by [FlameGraph](https://github.com/brendangregg/FlameGraph).
-
-```sh
-# Convert perf.data in the current directory to a format used by FlameGraph.
-$ python report_sample.py --symfs binary_cache >out.perf
-$ git clone https://github.com/brendangregg/FlameGraph.git
-$ FlameGraph/stackcollapse-perf.pl out.perf >out.folded
-$ FlameGraph/flamegraph.pl out.folded >a.svg
-```
-
-## simpleperf_report_lib.py
-
-simpleperf_report_lib.py is a Python library used to parse profiling data files generated by the
-record command. Internally, it uses libsimpleperf_report.so to do the work. Generally, for each
-profiling data file, we create an instance of ReportLib, pass it the file path (via SetRecordFile).
-Then we can read all samples through GetNextSample(). For each sample, we can read its event info
-(via GetEventOfCurrentSample), symbol info (via GetSymbolOfCurrentSample) and call chain info
-(via GetCallChainOfCurrentSample). We can also get some global information, like record options
-(via GetRecordCmd), the arch of the device (via GetArch) and meta strings (via MetaInfo).
-
-Examples of using simpleperf_report_lib.py are in report_sample.py, report_html.py,
-pprof_proto_generator.py and inferno/inferno.py.