12633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall#!/bin/bash 22633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 32633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken SumrallPERF="rand_emmc_perf" 42633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 52633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallif [ ! -r "$PERF" ] 62633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallthen 72633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Cannot read $PERF test binary" 82633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfi 92633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 102633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallif ! adb shell true >/dev/null 2>&1 112633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallthen 122633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "No device detected over adb" 132633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfi 142633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 152633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken SumrallHARDWARE=`adb shell getprop ro.hardware | tr -d "\r"` 162633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 172633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallcase "$HARDWARE" in 182633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall tuna | steelhead) 192633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq" 202633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CACHE="/dev/block/platform/omap/omap_hsmmc.0/by-name/cache" 21ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall MMCDEV="mmcblk0" 222633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall ;; 232633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 242633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall stingray | wingray) 252633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq" 262633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CACHE="/dev/block/platform/sdhci-tegra.3/by-name/cache" 27ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall MMCDEV="mmcblk0" 282633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall ;; 292633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 302633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall herring) 312633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "This test will wipe the userdata partition on $HARDWARE devices." 322633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall read -p "Do you want to proceed? " ANSWER 332633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 342633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall if [ "$ANSWER" != "yes" ] 352633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall then 362633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "aborting test" 372633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall exit 1 382633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall fi 392633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 402633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq" 412633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CACHE="/dev/block/platform/s3c-sdhci.0/by-name/userdata" 42ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall MMCDEV="mmcblk0" 432633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall ;; 442633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 452633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall grouper) 462633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq" 472633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall CACHE="/dev/block/platform/sdhci-tegra.3/by-name/CAC" 48ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall MMCDEV="mmcblk0" 492633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall ;; 502633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 51b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall manta) 52b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq" 53b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall CACHE="/dev/block/platform/dw_mmc.0/by-name/cache" 54ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall MMCDEV="mmcblk0" 55b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall ;; 56b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall 572633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall *) 582633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Unknown hardware $HARDWARE. Exiting." 592633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall exit 1 602633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallesac 612633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 622633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# prepare the device 632633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb root 642633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb wait-for-device 652633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb push "$PERF" /dev 662633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop 672633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop sdcard 682633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop ril-daemon 692633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop media 702633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop drm 712633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop keystore 722633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop tf_daemon 732633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop bluetoothd 742633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop hciattach 75ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell stop p2p_supplicant 76ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell stop wpa_supplicant 77ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell stop mobicore 782633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /sdcard >/dev/null 2>&1 79ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell umount /mnt/shell/sdcard0 >/dev/null 2>&1 802633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /data >/dev/null 2>&1 812633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /cache >/dev/null 2>&1 822633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Add more services here that other devices need to stop. 832633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# So far, this list is sufficient for: 842633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Prime 852633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 862633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# At this point, the device is quiescent, need to crank up the cpu speed, 872633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# then run tests 882633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell "cat $CPUFREQ/cpuinfo_max_freq > $CPUFREQ/scaling_max_freq" 892633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell "cat $CPUFREQ/cpuinfo_max_freq > $CPUFREQ/scaling_min_freq" 902633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 912633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Start the tests 922633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 932633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Sequential read test 942633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3 952633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo 96ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall adb shell "echo 3 > /proc/sys/vm/drop_caches" 972633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Sequential read test $I" 982633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall adb shell dd if="$CACHE" of=/dev/null bs=1048576 count=200 992633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone 1002633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 1012633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Sequential write test 1022633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3 1032633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo 1042633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Sequential write test $I" 1052633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall adb shell dd if=/dev/zero of="$CACHE" bs=1048576 count=200 1062633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone 1072633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 108ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# Random read tests require that we read from a much larger range of offsets 109ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# into the emmc chip than the write test. If we only read though 100 Megabytes 110ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# (and with a read-ahead of 128K), we quickly fill the buffer cache with 100 111ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# Megabytes of data, and subsequent reads are nearly instantaneous. Since 112ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# reading is non-destructive, and we've never shipped a device with less than 113ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# 8 Gbytes, for this test we read from the raw emmc device, and randomly seek 114ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# in the first 6 Gbytes. That is way more memory than any device we currently 115ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# have and it should keep the cache from being poluted with entries from 116ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# previous random reads. 117ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# 118ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# Also, test with the read-ahead set very low at 4K, and at the default 119ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall 120ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# Random read test, 4K read-ahead 121ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen SumrallORIG_READAHEAD=`adb shell cat /sys/block/$MMCDEV/queue/read_ahead_kb | tr -d "\r"` 122ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell "echo 4 > /sys/block/$MMCDEV/queue/read_ahead_kb" 123ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrallfor I in 1 2 3 124ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralldo 125ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall adb shell "echo 3 > /proc/sys/vm/drop_caches" 126ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall echo "Random read (4K read-ahead) test $I" 127ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall adb shell /dev/"$PERF" -r 6000 "/dev/block/$MMCDEV" 128ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralldone 129ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall 130ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall# Random read test, default read-ahead 131ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumralladb shell "echo $ORIG_READAHEAD > /sys/block/$MMCDEV/queue/read_ahead_kb" 1322633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3 1332633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo 134b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall adb shell "echo 3 > /proc/sys/vm/drop_caches" 135ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall echo "Random read (default read-ahead of ${ORIG_READAHEAD}K) test $I" 136ecb600d0d9de4eacfd619dfe380a94af1abee0ddKen Sumrall adb shell /dev/"$PERF" -r 6000 "/dev/block/$MMCDEV" 1372633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone 1382633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 1392633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Random write test 1402633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3 1412633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo 1422633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Random write test $I" 1432633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall adb shell /dev/"$PERF" -w 100 "$CACHE" 1442633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone 1452633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 1462633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Random write test with O_SYNC 1472633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3 1482633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo 1492633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall echo "Random write with o_sync test $I" 150b20f33f727e77c00b5b8176a541d5ddfbd469fefKen Sumrall adb shell /dev/"$PERF" -w -o 100 "$CACHE" 1512633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone 1522633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 1532633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Make a new empty /cache filesystem 1542633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell make_ext4fs "$CACHE" 1552633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall 156