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

Side by Side Diff: platform_tools/android/bin/android_perf

Issue 22617002: Update Skia Android tools. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: more fixes to make the bots happy Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « platform_tools/android/bin/android_make ('k') | platform_tools/android/bin/android_run_skia » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 PERF_CMD=$1 12 source $SCRIPT_DIR/android_setup.sh
13
14 source $SCRIPT_DIR/utils/setup_adb.sh 13 source $SCRIPT_DIR/utils/setup_adb.sh
15 14
16 if [ $(uname) == "Linux" ]; then 15 if [ $(uname) == "Linux" ]; then
17 PERFHOST=$SCRIPT_DIR/linux/perfhost 16 PERFHOST=$SCRIPT_DIR/linux/perfhost
18 elif [ $(uname) == "Darwin" ]; then 17 elif [ $(uname) == "Darwin" ]; then
19 PERFHOST=$SCRIPT_DIR/mac/perfhost 18 PERFHOST=$SCRIPT_DIR/mac/perfhost
20 else 19 else
21 echo "Could not automatically determine OS!" 20 echo "Could not automatically determine OS!"
22 exit 1; 21 exit 1;
23 fi 22 fi
24 23
24 # grab and remove the perf command from the input args
25 PERF_CMD=${APP_ARGS[0]}
26 unset APP_ARGS[0]
27
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
25 # We need the debug symbols from these files 43 # We need the debug symbols from these files
26 PERF_TMP_DIR=$(pwd)/android_perf_tmp 44 PERF_TMP_DIR=$(pwd)/android_perf_tmp
27 45
28 TMP_SYS_BIN=$PERF_TMP_DIR/system/bin 46 TMP_SYS_BIN=$PERF_TMP_DIR/system/bin
29 TMP_SYS_LIB=$PERF_TMP_DIR/system/lib 47 TMP_SYS_LIB=$PERF_TMP_DIR/system/lib
30 TMP_APP_LIB=$PERF_TMP_DIR/data/data/com.skia/lib 48 TMP_APP_LOC=$PERF_TMP_DIR/data/local/tmp
31 49
32 perf_setup() { 50 perf_setup() {
33 51
34 mkdir -p $TMP_SYS_BIN 52 mkdir -p $TMP_SYS_BIN
35 mkdir -p $TMP_SYS_LIB 53 mkdir -p $TMP_SYS_LIB
36 mkdir -p $TMP_APP_LIB 54 mkdir -p $TMP_APP_LOC
37 55
38 # setup symlinks to account for perf potentially looking elsewhere
39 mkdir -p $PERF_TMP_DIR/data/app-lib
40 $( cd $PERF_TMP_DIR/data/app-lib && ln -s ../data/com.skia/lib com.skia-1)
41 $( cd $PERF_TMP_DIR/data/app-lib && ln -s ../data/com.skia/lib com.skia-2)
42
43 echo "Copying symbol files" 56 echo "Copying symbol files"
44 $ADB pull /system/bin/skia_launcher $TMP_SYS_BIN 57 adb_pull_if_needed /system/lib/libc.so $TMP_SYS_LIB
45 $ADB pull /system/lib/libc.so $TMP_SYS_LIB 58 adb_pull_if_needed /system/lib/libstlport.so $TMP_SYS_LIB
46 $ADB pull /system/lib/libstlport.so $TMP_SYS_LIB 59 adb_pull_if_needed /system/lib/libcutils.so $TMP_SYS_LIB
47 $ADB pull /system/lib/libcutils.so $TMP_SYS_LIB 60 adb_pull_if_needed /system/lib/libGLESv2.so $TMP_SYS_LIB
48 $ADB pull /system/lib/libGLESv2.so $TMP_SYS_LIB 61 adb_pull_if_needed /system/lib/libandroid.so $TMP_SYS_LIB
49 $ADB pull /system/lib/libandroid.so $TMP_SYS_LIB 62 adb_pull_if_needed /system/lib/libm.so $TMP_SYS_LIB
50 $ADB pull /system/lib/libm.so $TMP_SYS_LIB 63 adb_pull_if_needed /system/lib/libz.so $TMP_SYS_LIB
51 $ADB pull /system/lib/libz.so $TMP_SYS_LIB 64
52 65 if [ ! -f "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" ];
53 if [ $# -ge 2 ]
54 then 66 then
55 APP_NAME=$(basename $2) 67 echo "Unable to find the ${runVars[0]} library"
56 $ADB pull /data/data/com.skia/lib/lib${APP_NAME}.so $TMP_APP_LIB 68 exit 1
57 else
58 $ADB pull /data/data/com.skia/lib/ $TMP_APP_LIB
59 fi 69 fi
60
61 70
71 echo "Pushing app..."
72 adb_push_if_needed "${SKIA_OUT}/${configuration}/skia_launcher" /data/local/ tmp
73 adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/libskia_android. so" /data/local/tmp
74 adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]} .so" /data/local/tmp
75
76 cp "${SKIA_OUT}/${configuration}/skia_launcher" $TMP_APP_LOC
77 cp "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" $TMP_APP_LOC
78 cp "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" $TMP_APP_LO C
62 } 79 }
63 80
64 perf_record() { 81 perf_record() {
65 82
66 APP_NAME=$(basename $2)
67 # Collect extra arguments to be passed to the skia_launcher binary
68 shift # perf_cmd
69 shift # app_name
70 while (( "$#" )); do
71 APP_ARGS="$APP_ARGS $1"
72 shift
73 done
74
75 echo "Checking for skia_launcher app..."
76 if [ ! -f $TMP_SYS_BIN/skia_launcher ]
77 then
78 echo "Unable to find the skia_launcher on the device"
79 rm -rf $PERF_TMP_DIR
80 exit 1;
81 fi
82
83 echo "Checking for $APP_NAME library..."
84 if [ ! -f $TMP_APP_LIB/lib$APP_NAME.so ]
85 then
86 echo "Unable to find the app's shared library on the device"
87 rm -rf $PERF_TMP_DIR
88 exit 1;
89 fi
90
91 echo "Killing any running Skia processes." 83 echo "Killing any running Skia processes."
92 $ADB shell ps | grep skia_launcher | awk '{print $2}' | xargs $ADB shell kil l 84 $ADB shell ps | grep skia_launcher | awk '{print $2}' | xargs $ADB shell kil l
93 85
94 echo "Starting application" 86 echo "Starting application"
95 $ADB shell skia_launcher $APP_NAME $APP_ARGS & 87 $ADB shell /data/local/tmp/skia_launcher ${runVars[@]} &
96 88
97 # WE REALLY REALLY WANT TO BE ABLE TO PASS THE SKIA_LAUNCHER APP DIRECTLY TO 89 # WE REALLY REALLY WANT TO BE ABLE TO PASS THE SKIA_LAUNCHER APP DIRECTLY TO
98 # PERF, BUT AT THIS POINT THE DATA FILE WE GET WHEN GOING THAT ROUTE IS UNAB LE 90 # PERF, BUT AT THIS POINT THE DATA FILE WE GET WHEN GOING THAT ROUTE IS UNAB LE
99 # TO BE READ BY THE REPORTING TOOL 91 # TO BE READ BY THE REPORTING TOOL
100 echo "Starting profiler" 92 echo "Starting profiler"
101 APP_PID=$($ADB shell ps | grep skia_launcher | awk '{print $2}') 93 APP_PID=$($ADB shell ps | grep skia_launcher | awk '{print $2}')
102 $ADB shell perf record -p ${APP_PID} sleep 70 94 $ADB shell perf record -p ${APP_PID} sleep 70
103 95
104 $ADB pull /data/perf.data $PERF_TMP_DIR/perf.data 96 $ADB pull /data/perf.data $PERF_TMP_DIR/perf.data
105 97
106 exit 0; 98 exit 0;
107 } 99 }
108 100
109 perf_report() { 101 perf_report() {
110 # Collect extra arguments to be passed to the perfhost binary 102 adb_pull_if_needed /data/perf.data $PERF_TMP_DIR/perf.data
111 while (( "$#" )); do 103 $PERFHOST report -i $PERF_TMP_DIR/perf.data --symfs=$PERF_TMP_DIR ${runVars[ @]}
112 APP_ARGS="$APP_ARGS $1"
113 shift
114 done
115
116 $PERFHOST report -i $PERF_TMP_DIR/perf.data --symfs=$PERF_TMP_DIR $APP_ARGS
117 } 104 }
118 105
119 # Clean up 106 # Clean up
120 perf_clean() { 107 perf_clean() {
121 rm -rf $PERF_TMP_DIR 108 rm -rf $PERF_TMP_DIR
122 } 109 }
123 110
124 case $PERF_CMD in 111 case $PERF_CMD in
125 setup) 112 setup)
126 perf_setup $@ 113 perf_setup ${runVars[@]}
127 ;; 114 ;;
128 record) 115 record)
129 perf_setup $@ 116 perf_setup ${runVars[@]}
130 perf_record $@ 117 perf_record ${runVars[@]}
131 ;; 118 ;;
132 report) 119 report)
133 perf_report 120 perf_report
134 ;; 121 ;;
135 clean) 122 clean)
136 perf_clean 123 perf_clean
137 ;; 124 ;;
138 *) 125 *)
139 echo -n "ERROR: unknown perf command ($PERF_CMD), valid values: " 126 echo -n "ERROR: unknown perf command ($PERF_CMD), valid values: "
140 echo "setup, record, report, clean" 127 echo "setup, record, report, clean"
141 exit 1; 128 exit 1;
142 ;; 129 ;;
143 esac 130 esac
144 131
145 exit 0; 132 exit 0;
OLDNEW
« no previous file with comments | « platform_tools/android/bin/android_make ('k') | platform_tools/android/bin/android_run_skia » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698