cd0df4f7cd
Change-Id: Ib276f960f385c88392bca90924a9a42752e585ad Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295603 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Nathaniel Nifong <nifong@google.com>
67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
# skpbench
|
|
|
|
skpbench is a benchmarking tool for replaying skp or mksp files on android devices.
|
|
it achieves a lower variance in framerate by controlling the clock speed and stopping
|
|
all other processes that could cause interference.
|
|
|
|
## Build
|
|
|
|
skpbench consists of the skpbench binary which must be built for the phone you intend to run on,
|
|
and skpbench.py which runs on the machine the phone is connected to via ADB and is the entry point.
|
|
|
|
The to build skia for android are at https://skia.org/user/build#android and reproduced here.
|
|
|
|
Download the Android NDK
|
|
|
|
```
|
|
cipd auth-login
|
|
python2 infra/bots/assets/android_ndk_linux/download.py -t /tmp/ndk
|
|
|
|
```
|
|
|
|
After this is set up once, build skpbench for your target cpu (assumed to be arm64 here for a Pixel 3)
|
|
|
|
```
|
|
bin/gn gen out/arm64 --args='ndk="/tmp/ndk" target_cpu="arm64" is_debug=false'
|
|
ninja -C out/arm64 skpbench
|
|
```
|
|
|
|
## Benchmark an SKP on a connected device.
|
|
|
|
First, copy the built skpbench binary and an example skp file to the device.
|
|
|
|
```
|
|
adb push out/arm64/skpbench /data/local/tmp
|
|
adb push /home/nifong/Downloads/foo.skp /data/local/tmp/skps/
|
|
```
|
|
|
|
Run skpbench.py (in my case on a Pixel 3)
|
|
|
|
```
|
|
python tools/skpbench/skpbench.py \
|
|
--adb \
|
|
--force \
|
|
--config gles \
|
|
/data/local/tmp/skpbench \
|
|
/data/local/tmp/skps/foo.skp
|
|
```
|
|
|
|
`--adb` specifies that it should use adb to the only connected device and run skpbench there.
|
|
`--force` is necessary because we don't yet have a configuration to monitor vitals on the Pixel 3.
|
|
`--config gles` specifies Open GL ES is the backend GPU config to use.
|
|
|
|
Additional documentation of arguments is printed by `python tools/skpbench/skpbench.py --help`
|
|
|
|
Output appears in the following format
|
|
```
|
|
accum median max min stddev samples sample_ms clock metric config bench
|
|
0.1834 0.1832 0.1897 0.1707 1.59% 101 50 cpu ms gles foo.skp
|
|
```
|
|
|
|
`accum` is the time taken to draw all frames, divided by the number of frames.
|
|
`metric` specifies that the unit is ms (milliseconds per frame)
|
|
|
|
## Production
|
|
|
|
skpbench is run as a tryjob from gerrit, where it uploads the results to perf.skia.org.
|
|
TODO(nifong, csmartdalton): elaborate on this section. |