1d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan#!/bin/sh 2d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 3d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanparseoptions() { 4d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan verbose=false 5d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan user_experience=false 6d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan little_cores_off=false 7d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan iterations=0 8d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan pagecached=false 9d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 10d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $# -gt 1 ] 11d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 12d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan case $1 in 13d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -a) 14d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 15d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -b) 16d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan little_cores_off=true 17d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 18d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -c) 19d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan pagecached=true 20d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 21d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -h) 22d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan usage 23d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 24d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -u) 25d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan user_experience=true 26d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 27d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan -v) 28d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan verbose=true 29d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 30d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan *) 31d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan usage 32d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 33d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan esac 34d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan shift 35d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 36d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 37d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan iterations=$1 38d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $iterations -lt 100 ]; then 39d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan usage 40d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 41d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 42d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 43d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasangetstats () { 44d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan infile=$1 45d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan app=$2 46d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Data for $app :" 47d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 48fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan # Activity Manager reports ThisTime and TotalTime. TotalTime seems to be 49fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan # a more measure of the launch from the users perspective. So using TotalTime 50fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan # as our metric for launch latency 51d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 52d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # From Activity Manager 53fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan echo "Launch Time (TotalTime) :" 54fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan fgrep TotalTime $infile | awk '{print $2}' | computestats 55d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 56d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Data from simpleperf 57d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "cpu-cycles :" 58d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep cpu-cycles $infile | awk '{print $1}' | sed s/,//g | computestats 59d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 60d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # CPU util% Data from /proc/stat 61d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "cpu-util% :" 62d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep 'Total CPU util' $infile | awk '{print $5}' | computestatsf 63d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "user-cpu-util% :" 64d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep 'User CPU util' $infile | awk '{print $5}' | computestatsf 65d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "sys-cpu-util% (incl hardirq/softirq) :" 66d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep 'Sys CPU util' $infile | awk '{print $5}' | computestatsf 67d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 68d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $verbose == true ]; then 69d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "instructions : " 70d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep instructions $infile | awk '{print $1}' | sed s/,//g | computestats 71d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 72d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "cycles per instruction : " 73d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep instructions $infile | awk '{print $4}' | sed s/,//g | computestatsf 74d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 75d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "branch-misses : " 76d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep branch-misses $infile | awk '{print $1}' | sed s/,//g | computestats 77d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 78d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "context-switches : " 79d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep context-switches $infile | awk '{print $1}' | sed s/,//g | computestats 80d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 81d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "page-faults : " 82d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep page-faults $infile | awk '{print $1}' | sed s/,//g | computestats 83d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 84d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 85d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $system_bdev_set == true ]; then 86d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # (Storage) Data from /proc we've collected 87d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "KB read for $system_block_device blkdev :" 88d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep KB $infile | grep system | awk '{print $5}' | computestats 89d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 90d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "iowait% :" 91d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep IOwait $infile | awk '{print $3}' | computestatsf 92d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 93d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Device util% for $system_block_device blkdev :" 94d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fgrep 'Device util' $infile | awk '{print $4}' | computestatsf 95d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 96d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 97d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 98d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasancpufreq_volantis() { 99d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Setting Governor to performance" 100d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $little_cores_off == true ]; then 101d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Cannot turn off Little cores on $model" 102d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 103d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 104d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=0 105d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan num_cores=2 106d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $num_cores ] 107d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 108d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_g\ 109d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanovernor" 110d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 2499000 > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_fr\ 111d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasaneq" 112d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 113d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 114d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Lock the GPU frequencies 115d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo -n 852000000 > /d/clock/override.gbus/rate 116d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo -n 1 > /d/clock/override.gbus/state 117d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 118d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 119d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasancpufreq_fugu() { 120d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Setting Governor to performance" 121d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $little_cores_off == true ]; then 122d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Cannot turn off Little cores on $model" 123d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 124d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 125d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=0 126d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan num_cores=4 127d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $num_cores ] 128d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 129d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor" 130d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 1833000 > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_freq" 131d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 132d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 133d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 134d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 135d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasancpufreq_marlin_sailfish () { 136d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Setting Governor to performance" 137d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # GPU Governor and Frequency 138d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor' 139d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 624000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq' 140d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $little_cores_off == true ]; then 141d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Disable Little Cores, force app to run on big cores 142d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Disabling Little Cores" 143d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 0 > /sys/devices/system/cpu/cpu0/online' 144d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 0 > /sys/devices/system/cpu/cpu1/online' 145d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan else 146d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Enabling All Cores" 147d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 1 > /sys/devices/system/cpu/cpu0/online' 148d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 1 > /sys/devices/system/cpu/cpu1/online' 149d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' 150d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 1996800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq' 151d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # cpu1 needed ? 152d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor' 153d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 1996800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq' 154d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 155d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Set Governor to performance, up scaling_max_frequency to highest 156d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor' 157d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Only necessary to set max_freq on cpu2, cpu3 is in same cluster and will 158d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # automatically get the same settings 159d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 2150400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq' 160d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 161d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 162d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasancpufreq_angler () { 163d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Setting Governor and Frequency" 164d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # GPU Governor and Frequency 165d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor" 166d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split" 167d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on" 168d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 10000 > /sys/class/kgsl/kgsl-3d0/idle_timer" 169d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $little_cores_off == true ]; then 170d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Disable Little Cores, force app to run on big cores 171d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Disabling Little Cores" 172d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=0 173d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan num_cores=4 174d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $num_cores ] 175d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 176d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 0 > /sys/devices/system/cpu/cpu$i/online" 177d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 178d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 179d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan else 180d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Enabling All Cores" 181d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Enable Little cores here, set governor to performance 182d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Lock frequency of little cores 183d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=0 184d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan num_cores=4 185d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $num_cores ] 186d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 187d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 1 > /sys/devices/system/cpu/cpu$i/online" 188d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor" 189d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Lock frequency of little cores 190d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 1555200 > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_freq" 191d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 192d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 193d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 194d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=4 195d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan num_cores=8 196d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $num_cores ] 197d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 198d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor" 199d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Lock frequency of big cores 200d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "echo 1958400 > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_freq" 201d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 202d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 203d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 204d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 205d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 206d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# This strange bit of logic is needed to get the underlying block devices for /system 207d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# for Marlin/Sailfish 208d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 209d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanget_marlin_sailfish_devnames () { 210d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # This bit of code required to get the block dev for /system and /vendor 211d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Suffix can be _a or _b, depending on what the active /system partition is 212d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# suffix=`adb shell getprop ro.boot.slot_suffix` 213d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Get the blockdevice using the suffix we got above 214d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# system_block_device=`adb shell ls -l /dev/block/platform/soc/*ufs*/by-name/system$suffix | awk '{ print $10 }' ` 215d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Vendor is more straightforward, but we don't use it right now 216d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# vendor_block_device=`adb shell df /vendor | grep -v Filesystem | awk '{print $1}' ` 217d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # finally extract the last component of the absolute device pathname we got above 218d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# system_block_device=`echo $system_block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' ` 219d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# vendor_block_device=`echo $vendor_block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' ` 220d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_bdev_set=true 221d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# For now, hardcode sda for Marlin/Sailfish block device 222d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# XXX - We'll get stats for entire device 223d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=sda 224d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo Block Device $system_block_device 225d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 226d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 227d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanget_angler_devnames () { 228d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Get the underlying bdev from the "by-name" mapping 229d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=`adb shell 'find /dev/block/platform -name by-name | xargs ls -l' | grep system | awk '{ print $10 }' ` 230d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # extract the last component of the absolute device pathname we got above 231d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=`echo $system_block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' ` 232d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # vendor is unused right now, but get the bdev anyway in case we decide to use it 233d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Get the underlying bdev from the "by-name" mapping 234d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan vendor_block_device=`adb shell 'find /dev/block/platform -name by-name | xargs ls -l' | grep vendor | awk '{ print $10 }' ` 235d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # extract the last component of the absolute device pathname we got above 236d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan vendor_block_device=`echo $vendor_block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' ` 237d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_bdev_set=true 238d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 239d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 240d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanget_fugu_devnames () { 241d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=`adb shell ls -l /dev/block/by-name/system | awk '{ print $10 }' ` 242d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=`echo $system_block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' ` 243d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_bdev_set=true 244d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 245d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 246d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanget_volantis_devnames () { 247d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Hardcoding all of the mmcblk0 device for now 248d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_block_device=mmcblk0 249d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_bdev_set=true 250d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 251d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 252d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasansystem_stats_before() { 253d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $system_bdev_set == true ]; then 254d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Get BEFORE read stats for /system 255d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/diskstats' | grep -w $system_block_device > /tmp/$model-system 256d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan BEFORE_RD_IOS_SYSTEM=`awk '{ print $4 }' /tmp/$model-system` 257d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan BEFORE_RD_SECTORS_SYSTEM=`awk '{ print $6 }' /tmp/$model-system` 258d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # iowait% computation 259d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/stat' | grep -w cpu > /tmp/procstat 260d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan user_ticks_before=`awk '{ print ($2 + $3) }' /tmp/procstat` 261d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan sys_ticks_before=`awk '{ print ($4 + $7 + $8) }' /tmp/procstat` 262d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpubusy_ticks_before=`awk '{ print ($2 + $3 + $4 + $7 + $8) }' /tmp/procstat` 263d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan iowait_ticks_before=`awk '{ print $6 }' /tmp/procstat` 264d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan total_ticks_before=`awk '{ print ($2 + $3 + $4 + $5 + $7 + $8) }' /tmp/procstat` 265d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Device util% computation 266d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Note hz=100, so multiplying uptime (in seconds) by 100, gives us 267d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # the uptime in hz. 268d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/uptime' > /tmp/uptime 269d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan uptime_before_hz=`awk '{ print ($1 * 100) }' /tmp/uptime` 270d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Note that the device (busy) ticks is in ms. Since hz=100, dividing 271d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # device (busy) ticks by 10, gives us this in the correct ticks units 272d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan device_util_before_hz=`awk '{ print ($13 / 10) }' /tmp/$model-system` 273d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 274d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 275d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 276d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasansystem_stats_after() { 277d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $system_bdev_set == true ]; then 278d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Get AFTER read stats for /system 279d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/diskstats' | grep -w $system_block_device > /tmp/$model-system 280d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan AFTER_RD_IOS_SYSTEM=`awk '{ print $4 }' /tmp/$model-system` 281d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan AFTER_RD_SECTORS_SYSTEM=`awk '{ print $6 }' /tmp/$model-system` 282d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # iowait% computation 283d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/stat' | grep -w cpu > /tmp/procstat 284d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan user_ticks_after=`awk '{ print ($2 + $3) }' /tmp/procstat` 285d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan sys_ticks_after=`awk '{ print ($4 + $7 + $8) }' /tmp/procstat` 286d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpubusy_ticks_after=`awk '{ print ($2 + $3 + $4 + $7 + $8) }' /tmp/procstat` 287d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan iowait_ticks_after=`awk '{ print $6 }' /tmp/procstat` 288d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan total_ticks_after=`awk '{ print ($2 + $3 + $4 + $5 + $7 + $8) }' /tmp/procstat` 289d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Device util% computation 290d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Note hz=100, so multiplying uptime (in seconds) by 100, gives us 291d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # the uptime in hz. 292d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'cat /proc/uptime' > /tmp/uptime 293d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan uptime_after_hz=`awk '{ print ($1 * 100) }' /tmp/uptime` 294d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Note that the device (busy) ticks is in ms. Since hz=100, dividing 295d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # device (busy) ticks by 10, gives us this in the correct ticks units 296d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan device_util_after_hz=`awk '{ print ($13 / 10) }' /tmp/$model-system` 297d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 298d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 299d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 300d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasansystem_stats_delta() { 301d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $system_bdev_set == true ]; then 302d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Sectors to KB 303d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan READ_KB_SYSTEM=`expr $AFTER_RD_SECTORS_SYSTEM - $BEFORE_RD_SECTORS_SYSTEM` 304d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan READ_KB_SYSTEM=`expr $READ_KB_SYSTEM / 2` 305d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo Read IOs /system = `expr $AFTER_RD_IOS_SYSTEM - $BEFORE_RD_IOS_SYSTEM` 306d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo Read KB /system = $READ_KB_SYSTEM 307d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo $iowait_ticks_before $iowait_ticks_after $total_ticks_before $total_ticks_after | awk '{ printf "IOwait = %.2f\n", (($2 - $1) * 100.0) / ($4 - $3) }' 308d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo $device_util_before_hz $device_util_after_hz $uptime_before_hz $uptime_after_hz | awk '{ printf "Device util% = %.2f\n", (($2 - $1) * 100.0) / ($4 - $3) }' 309d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo $user_ticks_after $user_ticks_before $total_ticks_after $total_ticks_before | awk '{ printf "User CPU util% = %.2f\n", (($1 - $2) * 100.0) / ($3 - $4) }' 310d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo $sys_ticks_after $sys_ticks_before $total_ticks_after $total_ticks_before | awk '{ printf "Sys CPU util% = %.2f\n", (($1 - $2) * 100.0) / ($3 - $4) }' 311d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo $cpubusy_ticks_after $cpubusy_ticks_before $total_ticks_after $total_ticks_before | awk '{ printf "Total CPU util% = %.2f\n", (($1 - $2) * 100.0) / ($3 - $4) }' 312d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 313d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 314d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 315d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanlaunch_app() { 316d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan package=$1 317d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan activity=$2 318d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "am force-stop $package" 319d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan sleep 1 320d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 321d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=0 322d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan while [ $i -lt $iterations ] 323d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan do 324d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $pagecached == false ]; then 325d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'echo 3 > /proc/sys/vm/drop_caches' 326d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 327d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # The -W argument to am start forces am start to wait till the launch completes. 328d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # The -S argument forces it to kill any existing app that is running first 329d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # eg. adb shell 'am start -W -S -n com.android.chrome/com.google.android.apps.chrome.Main' 330d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_stats_before 331d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "simpleperf stat -a am start -W -n $package/$activity" 332d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_stats_after 333d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan system_stats_delta 334d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan sleep 1 335d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell "am force-stop $package" 336d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan sleep 1 337d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan i=`expr $i + 1` 338d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan done 339d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 340d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 341d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanlaunch_fugu_apps() { 342d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.google.android.youtube.tv com.google.android.apps.youtube.tv.activity.TvGuideActivity > youtube-$model 343d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats youtube-$model YouTube 344d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.google.android.play.games com.google.android.gms.games.pano.activity.PanoGamesOnboardHostActivity > games-$model 345d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats games-$model Games 346d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.google.android.music com.android.music.activitymanagement.TopLevelActivity > music-$model 347d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats music-$model Music 348d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 349d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 350d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanlaunch_phone_apps() { 351d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.android.chrome com.google.android.apps.chrome.Main > chrome-$model 352d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats chrome-$model Chrome 353d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.google.android.GoogleCamera com.android.camera.CameraActivity > camera-$model 354d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats camera-$model Camera 355d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_app com.google.android.apps.maps com.google.android.maps.MapsActivity > maps-$model 356d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan getstats maps-$model Maps 357fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan launch_app com.google.android.youtube com.google.android.apps.youtube.app.WatchWhileActivity > youtube-$model 358fa5fbd7358636f4fb8a1242949d34c6393e8446fMohan Srinivasan getstats youtube-$model YouTube 359d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 360d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 361d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanusage() { 362d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo 'Usage: app-launcher [-c|-v] -a|-b|-u num-iterations' 363d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo 'where num-iterations >= 100' 364d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo '-v (optional) for verbose stats dump' 365d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo '-a|-b|-u required:' 366d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -a:all cores' 367d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -b:only big cores' 368d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -c:pagecached. Do not drop pagecache before each launch (not default)' 369d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -h:Dump this help menu' 370d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -u:user experience, no change to cpu/gpu frequencies or governors' 371d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -a/-b locks CPU/GPU freqs to max, performance governor, thermal/perfd off' 372d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo ' -u runs with default device configs, as users would see it' 373d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 374d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan} 375d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 376d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 377d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# The main() part of the script follows : 378d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 379d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 380d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanif [ $# -lt 2 ]; then 381d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan usage 382d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanfi 383d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 384d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanwhich computestats > /dev/null 385d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanif [ $? != 0 ]; then 386d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "ERROR: Please add computestats utiliy to your PATH" 387d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 388d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanfi 389d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 390d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanwhich computestatsf > /dev/null 391d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanif [ $? != 0 ]; then 392d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "Error: Please add computestatsf utility to your PATH" 393d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 394d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanfi 395d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 396d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanparseoptions $@ 397d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 398d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanadb root && sleep 2 399d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 400d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanif [ $user_experience == false ]; then 401d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # Important to stop the thermal-engine to prevent throttling while test is running 402d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan # and stop perfd 403d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'stop thermal-engine' 404d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan adb shell 'stop perfd' 405d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanelse 406d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo "User Experience: Default Configs. No changes to cpufreq settings" 407d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanfi 408d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 409d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanmodel=`adb shell getprop ro.product.name` 410d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# Releases are inconsistent with various trailing characters, remove them all 411d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanmodel=`echo $model | sed 's/[ \t\r\n]*$//' ` 412d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 413d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanecho Found $model Device 414d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 415d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasansystem_bdev_set=false 416d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasancase $model in 417d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan marlin | sailfish) 418d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $user_experience == false ]; then 419d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpufreq_marlin_sailfish 420d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 421d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan get_marlin_sailfish_devnames 422d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 423d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan angler) 424d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $user_experience == false ]; then 425d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpufreq_angler 426d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 427d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan get_angler_devnames 428d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 429d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fugu) 430d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $user_experience == false ]; then 431d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpufreq_fugu 432d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 433d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan get_fugu_devnames 434d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 435d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan volantis | volantisg) 436d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan if [ $user_experience == false ]; then 437d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan cpufreq_volantis 438d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan fi 439d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan get_volantis_devnames 440d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 441d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan *) 442d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan echo Unknown Device $model 443d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan exit 1 444d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan ;; 445d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanesac 446d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 447d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan 448d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 449d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# launch each app in turn 450d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan# 451d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanif [ $model == "fugu" ]; then 452d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_fugu_apps 453d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanelse # Phone Apps 454d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasan launch_phone_apps 455d5f50d8949b883b619e2acbf2b32bfab1d444189Mohan Srinivasanfi 456