Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: docs/profiling_content_shell_on_android.md

Issue 1950383002: Update docs for profiling Content Shell on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Profiling Content Shell on Android 1 # Profiling Content Shell on Android
2 2
3 Below are the instructions for setting up profiling for Content Shell on 3 Below are the instructions for setting up profiling for Content Shell on
4 Android. This will let you generate profiles for ContentShell. This will require 4 Android. This will let you generate profiles for ContentShell. This will require
5 linux, building an userdebug Android build, and wiping the device. 5 linux, building an userdebug Android build, and wiping the device.
6 6
7 [TOC] 7 [TOC]
8 8
9 ## Prepare your device. 9 ## Prepare your device.
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 1. Run `adb root`. Every time you connect your device you’ll want to run this. 67 1. Run `adb root`. Every time you connect your device you’ll want to run this.
68 1. If adb is not available, make sure to run `. build/android/envsetup.sh` 68 1. If adb is not available, make sure to run `. build/android/envsetup.sh`
69 69
70 If you get the error `error: device offline`, you may need to become a developer 70 If you get the error `error: device offline`, you may need to become a developer
71 on your device before Linux will see it. On Jellybean 4.2.1 and above this 71 on your device before Linux will see it. On Jellybean 4.2.1 and above this
72 requires going to “about phone” or “about tablet” and clicking the build number 72 requires going to “about phone” or “about tablet” and clicking the build number
73 7 times: 73 7 times:
74 http://androidmuscle.com/how-to-enable-usb-debugging-developer-options-on-nexus- 4-and-android-4-2-devices/ 74 http://androidmuscle.com/how-to-enable-usb-debugging-developer-options-on-nexus- 4-and-android-4-2-devices/
75 75
76 ## Enable profiling
77
78 Rebuild `content_shell_apk` with profiling enabled.
79
80 With GYP (deprecated):
81
82 export GYP_DEFINES="$GYP_DEFINES profiling=1"
83 build/gyp_chromium
84 ninja -C out/Release content_shell_apk
85
86 With GN:
87
88 gn args out/Profiling
89 # add "enable_profiling = true"
90 ninja -C out/Profiling content_shell_apk
91 export CHROMIUM_OUTPUT_DIR="$PWD/out/Profiling"
92
76 ## Run a Telemetry perf profiler 93 ## Run a Telemetry perf profiler
77 94
78 You can run any Telemetry benchmark with `--profiler=perf`, and it will: 95 You can run any Telemetry benchmark with `--profiler=perf`, and it will:
79 96
80 1. Download `perf` and `perfhost` 97 1. Download `perf` and `perfhost`
81 1. Install on your device 98 2. Install on your device
82 1. Run the test 99 3. Run the test
83 1. Setup symlinks to work with the `--symfs` parameter 100 4. Setup symlinks to work with the `--symfs` parameter
84 101
85 You can also run "manual" tests with Telemetry, more information here: 102 You can also run "manual" tests with Telemetry, more information here:
86 http://www.chromium.org/developers/telemetry/profiling#TOC-Manual-Profiling---An droid 103 http://www.chromium.org/developers/telemetry/profiling#TOC-Manual-Profiling---An droid
87 104
88 The following steps describe building `perf`, which is no longer necessary if 105 The following steps describe building `perf`, which is no longer necessary if
89 you use Telemetry. 106 you use Telemetry.
90 107
108 ## Use `adb_profile_chrome`
109
110 Even if you're not running a Telemetry test, you can use Catapult to
111 automatically push binaries and pull the profile data for you.
112
113 build/android/adb_profile_chrome --browser=content_shell --perf
114
115 While you still have to build, install and launch the APK yourself, Catapult
116 will take care of creating the symfs etc. (i.e. you can skip the "not needed for
117 Telemetry" steps below).
118
91 ## Install `/system/bin/perf` on your device (not needed for Telemetry) 119 ## Install `/system/bin/perf` on your device (not needed for Telemetry)
92 120
93 # From inside the android source tree (not inside Chromium) 121 # From inside the android source tree (not inside Chromium)
94 mmm external/linux-tools-perf/ 122 mmm external/linux-tools-perf/
95 adb remount # (allows you to write to the system image) 123 adb remount # (allows you to write to the system image)
96 adb sync 124 adb sync
97 adb shell perf top # check that perf can get samples (don’t expect symbols) 125 adb shell perf top # check that perf can get samples (don’t expect symbols)
98 126
99 ## Enable profiling
100
101 Rebuild `content_shell_apk` with profiling enabled
102
103 export GYP_DEFINES="$GYP_DEFINES profiling=1"
104 build/gyp_chromium
105 ninja -C out/Release content_shell_apk
106
107 ## Install ContentShell 127 ## Install ContentShell
108 128
109 Install with the following: 129 Install with the following:
110 130
111 build/android/adb_install_apk.py \ 131 build/android/adb_install_apk.py \
112 --apk out/Release/apks/ContentShell.apk \ 132 --apk out/Release/apks/ContentShell.apk \
113 --apk_package org.chromium.content_shell 133 --apk_package org.chromium.content_shell
114 134
115 ## Run ContentShell 135 ## Run ContentShell
116 136
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 chmod a+x perfhost_linux 180 chmod a+x perfhost_linux
161 181
162 ## Actually record a profile on the device! 182 ## Actually record a profile on the device!
163 183
164 Run the following: 184 Run the following:
165 185
166 adb shell ps | grep content (look for the pid of the sandboxed_process) 186 adb shell ps | grep content (look for the pid of the sandboxed_process)
167 adb shell perf record -g -p 12345 sleep 5 187 adb shell perf record -g -p 12345 sleep 5
168 adb pull /data/perf.data 188 adb pull /data/perf.data
169 189
170
171 ## Create the report 190 ## Create the report
172 191
173 1. Run the following: 192 1. Run the following:
174 193
175 ``` 194 ```
176 ./perfhost_linux report -g -i perf.data --symfs symbols/ 195 ./perfhost_linux report -g -i perf.data --symfs symbols/
177 ``` 196 ```
178 197
179 1. If you don’t see chromium/webkit symbols, make sure that you built/pushed 198 1. If you don’t see chromium/webkit symbols, make sure that you built/pushed
180 Release, and that the symlink you created to the .so is valid! 199 Release, and that the symlink you created to the .so is valid!
(...skipping 13 matching lines...) Expand all
194 213
195 ``` 214 ```
196 adb pull /proc/kallsyms symbols/kallsyms 215 adb pull /proc/kallsyms symbols/kallsyms
197 ``` 216 ```
198 217
199 1. Now add --kallsyms to your perfhost\_linux command: 218 1. Now add --kallsyms to your perfhost\_linux command:
200 ``` 219 ```
201 ./perfhost_linux report -g -i perf.data --symfs symbols/ \ 220 ./perfhost_linux report -g -i perf.data --symfs symbols/ \
202 --kallsyms=symbols/kallsyms 221 --kallsyms=symbols/kallsyms
203 ``` 222 ```
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698