Example #1
0
    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
Example #2
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._is_root:
      return

    result = self._adb.check_lines('''\
      cat /sys/class/power_supply/battery/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone14/temp \
          /sys/class/thermal/thermal_zone15/temp \
          /sys/kernel/debug/clk/oxili_gfx3d_clk/measure \
          /sys/kernel/debug/clk/bimc_clk/measure
      for N in 4 5 6; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus'),
       Expectation(int, max_value=88, name='tsens_tz_sensor13'),
       Expectation(int, max_value=88, name='tsens_tz_sensor14'),
       Expectation(long, min_value=(GPU_CLOCK_RATE - 5000),
                   max_value=(GPU_CLOCK_RATE + 5000), name='gpu clock rate'),
       Expectation(long, min_value=647995000, max_value=648007500,
                   name='ddr clock rate', sleeptime=10)] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)]

    Expectation.check_all(expectations, result)
Example #3
0
    def sanity_check(self):
        HardwareAndroid.sanity_check(self)

        if not self._is_root:
            return

        # only issue one shell command in an attempt to minimize interference.
        result = self._adb.check_lines('''\
      cat /sys/class/power_supply/bq27742-0/capacity \
          /sys/class/thermal/thermal_zone7/temp \
          /sys/class/thermal/thermal_zone0/temp \
          /sys/class/thermal/thermal_zone1/temp \
          /sys/class/thermal/thermal_zone7/cdev1/cur_state \
          /sys/class/thermal/thermal_zone7/cdev0/cur_state
      for N in $(seq 0 3); do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done
      cat /sys/devices/57000000.gpu/pstate | grep \*$''')

        expectations = \
          [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
           Expectation(int, max_value=40000, name='skin temperature'),
           Expectation(int, max_value=86000, name='cpu temperature'),
           Expectation(int, max_value=87000, name='gpu temperature'),
           Expectation(int, exact_value=0, name='cpu throttle'),
           Expectation(int, exact_value=0, name='gpu throttle')] + \
          [Expectation(int, exact_value=CPU_CLOCK_RATE,
                       name='cpu_%i clock rate' % i, sleeptime=30)
           for i in range(4)] + \
          [Expectation(str, exact_value=GPU_EMC_PROFILE, name='gpu/emc profile')]

        Expectation.check_all(expectations, result)
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check('''\
      cat /sys/class/power_supply/battery/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone14/temp \
          /sys/class/thermal/thermal_zone15/temp \
          /sys/kernel/debug/clk/oxili_gfx3d_clk/measure \
          /sys/kernel/debug/clk/bimc_clk/measure
      for N in 4 5 6; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus'),
       Expectation(int, max_value=88, name='tsens_tz_sensor13'),
       Expectation(int, max_value=88, name='tsens_tz_sensor14'),
       Expectation(long, min_value=(GPU_CLOCK_RATE - 5000),
                   max_value=(GPU_CLOCK_RATE + 5000), name='gpu clock rate'),
       Expectation(long, min_value=647995000, max_value=648007500,
                   name='ddr clock rate', sleeptime=10)] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)]

    Expectation.check_all(expectations, result.splitlines())
Example #5
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    # only issue one shell command in an attempt to minimize interference.
    result = self._adb.check('''\
      cat /sys/class/power_supply/bq27742-0/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone7/temp \
          /sys/class/thermal/thermal_zone0/temp \
          /sys/class/thermal/thermal_zone1/temp \
          /sys/class/thermal/thermal_zone7/cdev1/cur_state \
          /sys/class/thermal/thermal_zone7/cdev0/cur_state
      for N in 0 1 2; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done
      cat /sys/devices/57000000.gpu/pstate | grep \*$''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='0-2', name='online cpus'),
       Expectation(int, max_value=40000, name='skin temperature'),
       Expectation(int, max_value=86000, name='cpu temperature'),
       Expectation(int, max_value=87000, name='gpu temperature'),
       Expectation(int, exact_value=0, name='cpu throttle'),
       Expectation(int, exact_value=0, name='gpu throttle')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE,
                   name='cpu_%i clock rate' % i, sleeptime=30)
       for i in (0, 1, 2)] + \
      [Expectation(str, exact_value=GPU_EMC_PROFILE, name='gpu/emc profile')]

    Expectation.check_all(expectations, result.splitlines())
Example #6
0
    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
Example #7
0
  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
Example #9
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check(' '.join(
      ['cat',
       '/sys/class/power_supply/battery/capacity',
       '/sys/devices/system/cpu/online'] + \
      ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
       for i in range(2, 4)] + \
      ['/sys/kernel/debug/clk/bimc_clk/measure',
       '/sys/class/thermal/thermal_zone22/temp',
       '/sys/class/thermal/thermal_zone23/temp']))

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='2-3', name='online cpus')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(2, 4)] + \
       [Expectation(long, min_value=902390000, max_value=902409999,
                   name='measured ddr clock', sleeptime=10),
       Expectation(int, max_value=41000, name='pm8994_tz temperature'),
       Expectation(int, max_value=40, name='msm_therm temperature')]

    Expectation.check_all(expectations, result.splitlines())
  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
Example #11
0
    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(['''\
      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 main():
    # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)).
    DELIMITER = r'[, ](?!(?:[^(]*\([^)]*\))*[^()]*\))'
    configs = re.split(DELIMITER, FLAGS.config)
    skps = _path.find_skps(FLAGS.skps)

    if FLAGS.adb:
        adb = Adb(FLAGS.device_serial, echo=(FLAGS.verbosity >= 5))
        model = adb.check('getprop ro.product.model').strip()
        if model == 'Pixel C':
            from _hardware_pixel_c import HardwarePixelC
            hardware = HardwarePixelC(adb)
        elif model == 'Nexus 6P':
            from _hardware_nexus_6p import HardwareNexus6P
            hardware = HardwareNexus6P(adb)
        else:
            from _hardware_android import HardwareAndroid
            print(
                "WARNING: %s: don't know how to monitor this hardware; results "
                "may be unreliable." % model,
                file=sys.stderr)
            hardware = HardwareAndroid(adb)
    else:
        hardware = Hardware()

    with hardware:
        SKPBench.run_warmup(hardware.warmup_time, configs[0])
        if FLAGS.resultsfile:
            with open(FLAGS.resultsfile, mode='a+') as resultsfile:
                run_benchmarks(configs,
                               skps,
                               hardware,
                               resultsfile=resultsfile)
        else:
            run_benchmarks(configs, skps, hardware)
Example #14
0
 def filter_line(self, line):
     JUNK = [
         'NvRmPrivGetChipPlatform: Could not read platform information',
         'Expected on kernels without fuse support, using silicon'
     ]
     return False if line in JUNK else HardwareAndroid.filter_line(
         self, line)
Example #15
0
def main():
    # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)).
    DELIMITER = r'[, ](?!(?:[^(]*\([^)]*\))*[^()]*\))'
    configs = re.split(DELIMITER, FLAGS.config)
    skps = _path.find_skps(FLAGS.skps)

    if FLAGS.adb:
        adb = Adb(FLAGS.device_serial)
        model = adb.get_device_model()
        if model == 'Pixel C':
            from _hardware_pixel_c import HardwarePixelC
            hardware = HardwarePixelC(adb)
        else:
            from _hardware_android import HardwareAndroid
            print(
                "WARNING: %s: don't know how to monitor this hardware; results "
                "may be unreliable." % model,
                file=sys.stderr)
            hardware = HardwareAndroid(adb)
    else:
        hardware = Hardware()

    with hardware:
        if hardware.kick_in_time:
            print(
                "sleeping %i seconds to allow hardware settings to kick in..."
                % hardware.kick_in_time,
                file=sys.stderr)
            time.sleep(hardware.kick_in_time)
        run_benchmarks(configs, skps, hardware)
Example #16
0
def main():
    # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)).
    DELIMITER = r'[, ](?!(?:[^(]*\([^)]*\))*[^()]*\))'
    configs = re.split(DELIMITER, FLAGS.config)
    skps = _path.find_skps(FLAGS.skps)

    if FLAGS.adb:
        adb = Adb(FLAGS.device_serial)
        model = adb.get_device_model()
        if model == 'Pixel C':
            from _hardware_pixel_c import HardwarePixelC
            hardware = HardwarePixelC(adb)
        elif model == 'Nexus 6P':
            from _hardware_nexus_6p import HardwareNexus6P
            hardware = HardwareNexus6P(adb)
        else:
            from _hardware_android import HardwareAndroid
            print(
                "WARNING: %s: don't know how to monitor this hardware; results "
                "may be unreliable." % model,
                file=sys.stderr)
            hardware = HardwareAndroid(adb)
    else:
        hardware = Hardware()

    with hardware:
        SKPBench.run_warmup(hardware.warmup_time)
        run_benchmarks(configs, skps, hardware)
Example #17
0
  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
Example #20
0
    def sanity_check(self):
        HardwareAndroid.sanity_check(self)

        if not self._adb.is_root():
            return

        result = self._adb.check(' '.join(
          ['cat',
           '/sys/class/power_supply/battery/capacity',
           '/sys/devices/system/cpu/online'] + \
          ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
           for i in range(4, 7)] + \
      # Unfortunately we can't monitor the gpu clock:
      #
      #   /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
      #
      # It doesn't respect the min_freq/max_freq values when not under load.





          ['/sys/kernel/debug/clk/bimc_clk/measure',
           '/sys/class/kgsl/kgsl-3d0/temp',
           '/sys/class/kgsl/kgsl-3d0/throttling',
           '/sys/class/thermal/thermal_zone10/temp',
           '/sys/class/thermal/thermal_zone7/temp']))

        expectations = \
          [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
           Expectation(str, exact_value='4-6', name='online cpus')] + \
          [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
           for i in range(4, 7)] + \
          [Expectation(long, min_value=902390000, max_value=902409999,
                       name='measured ddr clock', sleeptime=10),
           Expectation(int, max_value=750, name='gpu temperature'),
           Expectation(int, exact_value=1, name='gpu throttling'),
           Expectation(int, max_value=75, name='msm_therm temperature'),
           Expectation(int, max_value=75000, name='pm8998_tz temperature')]

        Expectation.check_all(expectations, result.splitlines())
Example #21
0
def main():
    # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)).
    DELIMITER = r'[, ](?!(?:[^(]*\([^)]*\))*[^()]*\))'
    configs = re.split(DELIMITER, FLAGS.config)
    srcs = _path.find_skps(FLAGS.srcs)
    assert srcs

    if FLAGS.adb:
        adb = Adb(FLAGS.device_serial,
                  FLAGS.adb_binary,
                  echo=(FLAGS.verbosity >= 5))
        from _hardware_android import HardwareAndroid

        model = adb.check('getprop ro.product.model').strip()
        if model == 'Pixel C':
            from _hardware_pixel_c import HardwarePixelC
            hardware = HardwarePixelC(adb)
        elif model == 'Pixel' or model == "Pixel XL":
            from _hardware_pixel import HardwarePixel
            hardware = HardwarePixel(adb)
        elif model == 'Pixel 2':
            from _hardware_pixel2 import HardwarePixel2
            hardware = HardwarePixel2(adb)
        elif model == 'Nexus 6P':
            from _hardware_nexus_6p import HardwareNexus6P
            hardware = HardwareNexus6P(adb)
        else:
            print(
                "WARNING: %s: don't know how to monitor this hardware; results "
                "may be unreliable." % model,
                file=sys.stderr)
            hardware = HardwareAndroid(adb)

        if FLAGS.lock_clocks:
            hardware.__enter__()
            print(
                "Entered benchmarking mode, not running benchmarks. Reboot to restore."
            )
            return

        if FLAGS.clock_speed:
            hardware.setDesiredClock(FLAGS.clock_speed)
    else:
        hardware = Hardware()

    if FLAGS.resultsfile:
        with open(FLAGS.resultsfile, mode='a+') as resultsfile:
            run_benchmarks(configs, srcs, hardware, resultsfile=resultsfile)
    else:
        run_benchmarks(configs, srcs, hardware)
Example #22
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check(' '.join(
      ['cat',
       '/sys/class/power_supply/battery/capacity',
       '/sys/devices/system/cpu/online'] + \
      ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
       for i in range(4, 7)] + \
      # Unfortunately we can't monitor the gpu clock:
      #
      #   /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
      #
      # It doesn't respect the min_freq/max_freq values when not under load.
      ['/sys/kernel/debug/clk/bimc_clk/measure',
       '/sys/class/kgsl/kgsl-3d0/temp',
       '/sys/class/kgsl/kgsl-3d0/throttling',
       '/sys/class/thermal/thermal_zone10/temp',
       '/sys/class/thermal/thermal_zone7/temp']))

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)] + \
      [Expectation(long, min_value=902390000, max_value=902409999,
                   name='measured ddr clock', sleeptime=10),
       Expectation(int, max_value=750, name='gpu temperature'),
       Expectation(int, exact_value=1, name='gpu throttling'),
       Expectation(int, max_value=75, name='msm_therm temperature'),
       Expectation(int, max_value=75000, name='pm8998_tz temperature')]

    Expectation.check_all(expectations, result.splitlines())
Example #23
0
def main():
    # Delimiter is ',' or ' ', skip if nested inside parens (e.g. gpu(a=b,c=d)).
    DELIMITER = r'[, ](?!(?:[^(]*\([^)]*\))*[^()]*\))'
    configs = re.split(DELIMITER, FLAGS.config)
    srcs = _path.find_skps(FLAGS.srcs)
    assert srcs

    if FLAGS.adb:
        adb = Adb(FLAGS.device_serial,
                  FLAGS.adb_binary,
                  echo=(FLAGS.verbosity >= 5))
        model = adb.check('getprop ro.product.model').strip()
        if model == 'Pixel C':
            from _hardware_pixel_c import HardwarePixelC
            hardware = HardwarePixelC(adb)
        elif model == 'Pixel':
            from _hardware_pixel import HardwarePixel
            hardware = HardwarePixel(adb)
        elif model == 'Pixel 2':
            from _hardware_pixel2 import HardwarePixel2
            hardware = HardwarePixel2(adb)
        elif model == 'Nexus 6P':
            from _hardware_nexus_6p import HardwareNexus6P
            hardware = HardwareNexus6P(adb)
        elif FLAGS.force:
            from _hardware_android import HardwareAndroid
            print(
                "WARNING: %s: don't know how to monitor this hardware; results "
                "may be unreliable." % model,
                file=sys.stderr)
            hardware = HardwareAndroid(adb)
        else:
            raise Exception("%s: don't know how to monitor this hardware. "
                            "Use --force to bypass this warning." % model)
    else:
        hardware = Hardware()

    if FLAGS.resultsfile:
        with open(FLAGS.resultsfile, mode='a+') as resultsfile:
            run_benchmarks(configs, srcs, hardware, resultsfile=resultsfile)
    else:
        run_benchmarks(configs, srcs, hardware)
Example #24
0
 def filter_line(self, line):
   JUNK = ['NvRmPrivGetChipPlatform: Could not read platform information',
           'Expected on kernels without fuse support, using silicon']
   return False if line in JUNK else HardwareAndroid.filter_line(self, line)
Example #25
0
 def __exit__(self, exception_type, exception_value, exception_traceback):
   HardwareAndroid.__exit__(self, exception_type,
                            exception_value, exception_traceback)
   self._unlock_clocks()
Example #26
0
 def __enter__(self):
   self._lock_clocks()
   return HardwareAndroid.__enter__(self)
Example #27
0
 def __init__(self, adb):
   HardwareAndroid.__init__(self, adb)
Example #28
0
 def __exit__(self, exception_type, exception_value, exception_traceback):
     HardwareAndroid.__exit__(self, exception_type, exception_value,
                              exception_traceback)
     self._unlock_clocks()
 def __init__(self, adb):
   HardwareAndroid.__init__(self, adb)
Example #30
0
  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
Example #31
0
 def __enter__(self):
     HardwareAndroid.__enter__(self)
     self._lock_clocks()
     return self
Example #32
0
 def __init__(self, adb):
   HardwareAndroid.__init__(self, adb)
   self._discover_devfreqs()
Example #33
0
 def sleep(self, sleeptime):
   self._unlock_clocks()
   HardwareAndroid.sleep(self, sleeptime)
   self._lock_clocks()
Example #34
0
 def sleep(self, sleeptime):
     self._unlock_clocks()
     HardwareAndroid.sleep(self, sleeptime)
     self._lock_clocks()
Example #35
0
    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