OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # | 2 # |
3 # android_perf: utility for running perf on an android device | 3 # android_perf: utility for running perf on an android device |
4 # | 4 # |
5 # The basic usage sequence is to run... | 5 # The basic usage sequence is to run... |
6 # 1) perf record [gm/tests/bench] # runs profiler on specified app | 6 # 1) perf record [gm/tests/bench] # runs profiler on specified app |
7 # 2) perf report # prints profiler results | 7 # 2) perf report # prints profiler results |
8 # 3) perf clean # cleans the temporary directory used to store results | 8 # 3) perf clean # cleans the temporary directory used to store results |
9 # | 9 # |
10 | 10 |
11 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | 11 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
12 source $SCRIPT_DIR/android_setup.sh | 12 source $SCRIPT_DIR/android_setup.sh |
13 source $SCRIPT_DIR/utils/setup_adb.sh | 13 source $SCRIPT_DIR/utils/setup_adb.sh |
14 | 14 |
15 if [ $(uname) == "Linux" ]; then | 15 if [ $(uname) == "Linux" ]; then |
16 PERFHOST=$SCRIPT_DIR/linux/perfhost | 16 PERFHOST=$SCRIPT_DIR/linux/perfhost |
17 elif [ $(uname) == "Darwin" ]; then | 17 elif [ $(uname) == "Darwin" ]; then |
18 PERFHOST=$SCRIPT_DIR/mac/perfhost | 18 PERFHOST=$SCRIPT_DIR/mac/perfhost |
19 else | 19 else |
20 echo "Could not automatically determine OS!" | 20 echo "Could not automatically determine OS!" |
21 exit 1; | 21 exit 1; |
22 fi | 22 fi |
23 | 23 |
24 # grab and remove the perf command from the input args | 24 # grab and remove the perf command from the input args |
25 PERF_CMD=${APP_ARGS[0]} | 25 PERF_CMD=${APP_ARGS[0]} |
26 unset APP_ARGS[0] | 26 unset APP_ARGS[0] |
27 | 27 runVars=("${APP_ARGS[@]}") # shift array indices |
28 configuration="Debug" | |
29 | |
30 for arg in ${APP_ARGS[@]} | |
31 do | |
32 if [[ "${arg}" == "--release" ]]; | |
33 then | |
34 configuration="Release" | |
35 else | |
36 echo "${arg}" | |
37 runVars=("${runVars[@]}" "${arg}") | |
38 fi | |
39 | |
40 shift | |
41 done | |
42 | 28 |
43 # We need the debug symbols from these files | 29 # We need the debug symbols from these files |
44 PERF_TMP_DIR=$(pwd)/android_perf_tmp | 30 PERF_TMP_DIR=$(pwd)/android_perf_tmp |
45 | 31 |
46 TMP_SYS_BIN=$PERF_TMP_DIR/system/bin | 32 TMP_SYS_BIN=$PERF_TMP_DIR/system/bin |
47 TMP_SYS_LIB=$PERF_TMP_DIR/system/lib | 33 TMP_SYS_LIB=$PERF_TMP_DIR/system/lib |
48 TMP_APP_LOC=$PERF_TMP_DIR/data/local/tmp | 34 TMP_APP_LOC=$PERF_TMP_DIR/data/local/tmp |
49 | 35 |
50 perf_setup() { | 36 perf_setup() { |
51 | 37 |
52 mkdir -p $TMP_SYS_BIN | 38 mkdir -p $TMP_SYS_BIN |
53 mkdir -p $TMP_SYS_LIB | 39 mkdir -p $TMP_SYS_LIB |
54 mkdir -p $TMP_APP_LOC | 40 mkdir -p $TMP_APP_LOC |
55 | 41 |
56 echo "Copying symbol files" | 42 echo "Copying symbol files" |
57 adb_pull_if_needed /system/lib/libc.so $TMP_SYS_LIB | 43 adb_pull_if_needed /system/lib/libc.so $TMP_SYS_LIB |
58 adb_pull_if_needed /system/lib/libstlport.so $TMP_SYS_LIB | 44 adb_pull_if_needed /system/lib/libstlport.so $TMP_SYS_LIB |
59 adb_pull_if_needed /system/lib/libcutils.so $TMP_SYS_LIB | 45 adb_pull_if_needed /system/lib/libcutils.so $TMP_SYS_LIB |
60 adb_pull_if_needed /system/lib/libGLESv2.so $TMP_SYS_LIB | 46 adb_pull_if_needed /system/lib/libGLESv2.so $TMP_SYS_LIB |
61 adb_pull_if_needed /system/lib/libandroid.so $TMP_SYS_LIB | 47 adb_pull_if_needed /system/lib/libandroid.so $TMP_SYS_LIB |
62 adb_pull_if_needed /system/lib/libm.so $TMP_SYS_LIB | 48 adb_pull_if_needed /system/lib/libm.so $TMP_SYS_LIB |
63 adb_pull_if_needed /system/lib/libz.so $TMP_SYS_LIB | 49 adb_pull_if_needed /system/lib/libz.so $TMP_SYS_LIB |
64 | 50 |
65 if [ ! -f "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" ]; | 51 # BUILDTYPE variable is set by android_setup.sh |
| 52 BUILDDIR="${SKIA_OUT}/${BUILDTYPE}" |
| 53 if [ ! -f "${BUILDDIR}/lib/lib${runVars[0]}.so" ]; |
66 then | 54 then |
67 echo "Unable to find the ${runVars[0]} library" | 55 echo "Unable to find the ${runVars[0]} library in ${BUILDDIR}/lib." |
68 exit 1 | 56 exit 1 |
69 fi | 57 fi |
70 | 58 |
71 echo "Pushing app..." | 59 echo "Pushing app..." |
72 adb_push_if_needed "${SKIA_OUT}/${configuration}/skia_launcher" /data/local/
tmp | 60 for lib_file in \ |
73 adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/libskia_android.
so" /data/local/tmp | 61 "${BUILDDIR}/skia_launcher" \ |
74 adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}
.so" /data/local/tmp | 62 "${BUILDDIR}/lib/libskia_android.so" \ |
75 | 63 "${BUILDDIR}/lib/lib${runVars[0]}.so" \ |
76 cp "${SKIA_OUT}/${configuration}/skia_launcher" $TMP_APP_LOC | 64 ; do |
77 cp "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" $TMP_APP_LOC | 65 adb_push_if_needed "$lib_file" /data/local/tmp |
78 cp "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" $TMP_APP_LO
C | 66 cp "$lib_file" $TMP_APP_LOC |
| 67 done |
79 } | 68 } |
80 | 69 |
81 perf_record() { | 70 perf_record() { |
82 | 71 |
83 echo "Killing any running Skia processes." | 72 echo "Killing any running Skia processes." |
84 $ADB shell ps | grep skia_launcher | awk '{print $2}' | xargs $ADB shell kil
l | 73 $ADB shell ps | grep skia_launcher | awk '{print $2}' | xargs $ADB shell kil
l |
85 | 74 |
86 echo "Starting application" | 75 echo "Starting application" |
87 $ADB shell /data/local/tmp/skia_launcher ${runVars[@]} & | 76 $ADB shell /data/local/tmp/skia_launcher ${runVars[@]} & |
88 | 77 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 perf_clean | 112 perf_clean |
124 ;; | 113 ;; |
125 *) | 114 *) |
126 echo -n "ERROR: unknown perf command ($PERF_CMD), valid values: " | 115 echo -n "ERROR: unknown perf command ($PERF_CMD), valid values: " |
127 echo "setup, record, report, clean" | 116 echo "setup, record, report, clean" |
128 exit 1; | 117 exit 1; |
129 ;; | 118 ;; |
130 esac | 119 esac |
131 | 120 |
132 exit 0; | 121 exit 0; |
OLD | NEW |