def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # pylint: disable=line-too-long # Based on https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/tests/scripts/prep_ryu.sh # All CPUs have the same scaling settings, so we only need to set it once ''' stop thermal-engine stop perfd echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed ''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the fourth core. This will hopefully produce less heat, allowing # for more consistent results. 3 cores should be enough to run Ganesh, # the graphics driver, and the OS. ''' echo 0 > /sys/devices/system/cpu/cpu3/online''', # lock gpu/emc clocks. ''' chown root:root /sys/devices/57000000.gpu/pstate echo %s > /sys/devices/57000000.gpu/pstate''' % GPU_EMC_PROFILE_ID ])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # turn on and lock the first 3 cores. ''' for N in 0 1 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the fourth core. ''' echo 0 > /sys/devices/system/cpu/cpu3/online''', # lock gpu/emc clocks. ''' chown root:root /sys/devices/57000000.gpu/pstate echo %s > /sys/devices/57000000.gpu/pstate''' % GPU_EMC_PROFILE_ID])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # turn on and lock the first 3 cores. ''' for N in 0 1 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the fourth core. ''' echo 0 > /sys/devices/system/cpu/cpu3/online''', # lock gpu/emc clocks. ''' chown root:root /sys/devices/57000000.gpu/pstate echo %s > /sys/devices/57000000.gpu/pstate''' % GPU_EMC_PROFILE_ID ])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # pylint: disable=line-too-long # Based on https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/tests/scripts/prep_ryu.sh # All CPUs have the same scaling settings, so we only need to set it once ''' stop thermal-engine stop perfd echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed ''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the fourth core. This will hopefully produce less heat, allowing # for more consistent results. 3 cores should be enough to run Ganesh, # the graphics driver, and the OS. ''' echo 0 > /sys/devices/system/cpu/cpu3/online''', # lock gpu/emc clocks. ''' chown root:root /sys/devices/57000000.gpu/pstate echo %s > /sys/devices/57000000.gpu/pstate''' % GPU_EMC_PROFILE_ID])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('''\ stop thermal-engine stop thermald stop perfd stop mpdecision''') # enable and lock 3 of 4 big cores. self._adb.shell('''\ for N in 4 5 6; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3))) # turn off all other cores self._adb.shell('''\ for N in 0 1 2 3 7; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''') # gpu/ddr perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf self._adb.shell('''\ echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 1000000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo %i > /sys/class/kgsl/kgsl-3d0/gpuclk''' % tuple(GPU_CLOCK_RATE for _ in range(3))) # ddr perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf self._adb.shell('''\ echo performance > /sys/class/devfreq/qcom,cpubw.32/governor echo 9887 > /sys/class/devfreq/qcom,cpubw.32/max_freq echo 9887 > /sys/class/devfreq/qcom,cpubw.32/min_freq echo performance > /sys/class/devfreq/qcom,gpubw.70/governor echo 9887 > /sys/class/devfreq/qcom,gpubw.70/max_freq echo 9887 > /sys/class/devfreq/qcom,gpubw.70/min_freq''') return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join(['''\ stop thermal-engine stop thermald stop perfd stop mpdecision''', # enable and lock the two fast cores. ''' for N in 3 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the two slow cores ''' for N in 1 0; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # gpu perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 1000000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo userspace > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo 2 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo 2 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel echo 2 > /sys/class/kgsl/kgsl-3d0/thermal_pwrlevel echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo %i > /sys/class/kgsl/kgsl-3d0/max_gpuclk echo %i > /sys/class/kgsl/kgsl-3d0/gpuclk''' % tuple(GPU_CLOCK_RATE for _ in range(4))] + \ self._devfreq_lock_cmds)) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # enable and lock the two fast cores. ''' stop thermal-engine stop perfd for N in 3 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the two slow cores ''' for N in 1 0; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # pylint: disable=line-too-long # Set GPU bus and idle timer # Set DDR frequency to max # Set GPU to performance mode, 315 MHZ # See https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/tests/scripts/prep_marlfish.sh ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 10000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo 13763 > /sys/class/devfreq/soc:qcom,gpubw/min_freq echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo 4 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo 4 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel''' % tuple(GPU_CLOCK_RATE for _ in range(2)) ])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # enable and lock the two fast cores. ''' stop thermal-engine stop perfd for N in 3 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the two slow cores ''' for N in 1 0; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # pylint: disable=line-too-long # Set GPU bus and idle timer # Set DDR frequency to max # Set GPU to performance mode, 315 MHZ # See https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/tests/scripts/prep_marlfish.sh ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 10000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo 13763 > /sys/class/devfreq/soc:qcom,gpubw/min_freq echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo 4 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo 4 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel''' % tuple(GPU_CLOCK_RATE for _ in range(2))])) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self # enable and lock 3 of 4 big cores. self._adb.shell('''\ for N in 4 5 6; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3))) # turn off all other cores self._adb.shell('''\ for N in 0 1 2 3 7; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''') # gpu/ddr perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf self._adb.shell('''\ echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 1000000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo %i > /sys/class/kgsl/kgsl-3d0/gpuclk''' % tuple(GPU_CLOCK_RATE for _ in range(3))) # ddr perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf self._adb.shell('''\ echo performance > /sys/class/devfreq/qcom,cpubw.32/governor echo 9887 > /sys/class/devfreq/qcom,cpubw.32/max_freq echo 9887 > /sys/class/devfreq/qcom,cpubw.32/min_freq echo performance > /sys/class/devfreq/qcom,gpubw.70/governor echo 9887 > /sys/class/devfreq/qcom,gpubw.70/max_freq echo 9887 > /sys/class/devfreq/qcom,gpubw.70/min_freq''') return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ # enable and lock the two fast cores. ''' for N in 3 2; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # turn off the two slow cores ''' for N in 1 0; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # gpu perf commands from # https://developer.qualcomm.com/qfile/28823/lm80-p0436-11_adb_commands.pdf ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on echo 1000000 > /sys/class/kgsl/kgsl-3d0/idle_timer echo userspace > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo 2 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo 2 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel echo 2 > /sys/class/kgsl/kgsl-3d0/thermal_pwrlevel echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq echo %i > /sys/class/kgsl/kgsl-3d0/max_gpuclk echo %i > /sys/class/kgsl/kgsl-3d0/gpuclk''' % tuple(GPU_CLOCK_RATE for _ in range(4))] + \ self._devfreq_lock_cmds)) return self
def __enter__(self): self._lock_clocks() return HardwareAndroid.__enter__(self)
def __enter__(self): HardwareAndroid.__enter__(self) self._lock_clocks() return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ ''' stop thermal-engine stop perfd''', # turn off the slow cores and one fast core ''' for N in 0 1 2 3 7; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # lock 3 fast cores: two for Skia and one for the OS ''' for N in 4 5 6; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # Set GPU bus and idle timer ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split''', # csmartdalton, 4-26-2018: this line hangs my device # echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on ''' echo 10000 > /sys/class/kgsl/kgsl-3d0/idle_timer''', # Set mem frequency to max ''' echo %i > /sys/class/devfreq/soc\:qcom,gpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,gpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,cpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,cpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,mincpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,mincpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,memlat-cpu0/min_freq echo %i > /sys/class/devfreq/soc\:qcom,memlat-cpu0/max_freq''' % tuple(MEM_CLOCK_RATE for _ in range(8)), # Set GPU to performance mode ''' echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq''' % tuple(GPU_CLOCK_RATE for _ in range(2)), # Set GPU power level ''' echo %i > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo %i > /sys/class/kgsl/kgsl-3d0/min_pwrlevel''' % tuple(GPU_POWER_LEVEL for _ in range(2)) ])) assert('msm_therm' == self._adb.check(\ 'cat /sys/class/thermal/thermal_zone10/type').strip()) assert('pm8998_tz' == self._adb.check(\ 'cat /sys/class/thermal/thermal_zone7/type').strip()) return self
def __enter__(self): HardwareAndroid.__enter__(self) if not self._adb.is_root(): return self self._adb.shell('\n'.join([ ''' stop thermal-engine stop perfd''', # turn off the slow cores and one fast core ''' for N in 0 1 2 3 7; do echo 0 > /sys/devices/system/cpu/cpu$N/online done''', # lock 3 fast cores: two for Skia and one for the OS ''' for N in 4 5 6; do echo 1 > /sys/devices/system/cpu/cpu$N/online echo userspace > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_governor echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_max_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_min_freq echo %i > /sys/devices/system/cpu/cpu$N/cpufreq/scaling_setspeed done''' % tuple(CPU_CLOCK_RATE for _ in range(3)), # Set GPU bus and idle timer ''' echo 0 > /sys/class/kgsl/kgsl-3d0/bus_split''', # csmartdalton, 4-26-2018: this line hangs my device # echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on ''' echo 10000 > /sys/class/kgsl/kgsl-3d0/idle_timer''', # Set mem frequency to max ''' echo %i > /sys/class/devfreq/soc\:qcom,gpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,gpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,cpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,cpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,mincpubw/min_freq echo %i > /sys/class/devfreq/soc\:qcom,mincpubw/max_freq echo %i > /sys/class/devfreq/soc\:qcom,memlat-cpu0/min_freq echo %i > /sys/class/devfreq/soc\:qcom,memlat-cpu0/max_freq''' % tuple(MEM_CLOCK_RATE for _ in range(8)), # Set GPU to performance mode ''' echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq echo %i > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq''' % tuple(GPU_CLOCK_RATE for _ in range(2)), # Set GPU power level ''' echo %i > /sys/class/kgsl/kgsl-3d0/max_pwrlevel echo %i > /sys/class/kgsl/kgsl-3d0/min_pwrlevel''' % tuple(GPU_POWER_LEVEL for _ in range(2))])) assert('msm_therm' == self._adb.check(\ 'cat /sys/class/thermal/thermal_zone10/type').strip()) assert('pm8998_tz' == self._adb.check(\ 'cat /sys/class/thermal/thermal_zone7/type').strip()) return self