From 7f5d5d2baba439a78a5a2e4f5149a17236ed84fe Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Fri, 8 Dec 2017 10:26:56 -0500 Subject: Fix scaling issues for some devices (e.g. Pixel) Bug: skia: NOTRY=true Change-Id: Ia6a80ecb97b5d30197932ec7d340163624e315bd Reviewed-on: https://skia-review.googlesource.com/82682 Reviewed-by: Ravi Mistry Commit-Queue: Kevin Lubick --- ...lang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json') diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json index 9011333892..41cb265880 100644 --- a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json +++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json @@ -657,7 +657,7 @@ "cmd": [ "python", "-u", - "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\nmodel = sys.argv[2]\ntarget_percent = float(sys.argv[3])\nlog = subprocess.check_output([ADB, 'root'])\n# check for message like 'adbd cannot run as root in production builds'\nif 'cannot' in log:\n raise Exception('adb root failed')\n\nif model == 'Nexus10':\n # Nexus10 doesn't list available frequencies, but it does give a\n # min and a max and seems to round to the nearest 100khz, so a\n # subset of those available are here.\n available_freqs = [200000, 400000, 600000, 800000, 1000000, 1200000,\n 1400000, 1700000]\nelif model == 'Nexus7':\n # Nexus7 claims to support 1300000, but only really allows 1200000\n available_freqs = [51000, 102000, 204000, 340000, 475000, 640000, 760000,\n 860000, 1000000, 1100000, 1200000]\nelse:\n # Most devices give a list of their available frequencies.\n available_freqs = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies'])\n\n # Check for message like '/system/bin/sh: file not found'\n if available_freqs and '/system/bin/sh' not in available_freqs:\n available_freqs = sorted(\n int(i) for i in available_freqs.strip().split())\n else:\n raise Exception('Could not get list of available frequencies: %s' %\n available_freqs)\n\nmaxfreq = available_freqs[-1]\ntarget = int(round(maxfreq * target_percent))\nfreq = maxfreq\nfor f in reversed(available_freqs):\n if f <= target:\n freq = f\n break\n\nprint 'Setting frequency to %d' % freq\n\nsubprocess.check_output([ADB, 'shell', 'echo \"userspace\" > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'])\n# If scaling_max_freq is lower than our attempted setting, it won't take.\nsubprocess.check_output([ADB, 'shell', 'echo %d > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq' % freq])\nsubprocess.check_output([ADB, 'shell', 'echo 0 > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq'])\nsubprocess.check_output([ADB, 'shell', 'echo %d > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed' % freq])\ntime.sleep(5)\nactual_freq = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq']).strip()\nif actual_freq != str(freq):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_freq, freq))\n", + "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\nmodel = sys.argv[2]\ntarget_percent = float(sys.argv[3])\nlog = subprocess.check_output([ADB, 'root'])\n# check for message like 'adbd cannot run as root in production builds'\nprint log\nif 'cannot' in log:\n raise Exception('adb root failed')\n\nif model == 'Nexus10':\n # Nexus10 doesn't list available frequencies, but it does give a\n # min and a max and seems to round to the nearest 100khz, so a\n # subset of those available are here.\n available_freqs = [200000, 400000, 600000, 800000, 1000000, 1200000,\n 1400000, 1700000]\nelif model == 'Nexus7':\n # Nexus7 claims to support 1300000, but only really allows 1200000\n available_freqs = [51000, 102000, 204000, 340000, 475000, 640000, 760000,\n 860000, 1000000, 1100000, 1200000]\nelse:\n # Temporary logging to get a sense of what devices have multiple cpus\n try:\n print subprocess.check_output([ADB, 'shell', 'cat ',\n '/sys/devices/system/cpu/cpu?/cpufreq/affected_cpus'])\n print subprocess.check_output([ADB, 'shell', 'cat ',\n '/sys/devices/system/cpu/cpu?/cpufreq/scaling_available_frequencies'])\n except Exception as e:\n print e.output.strip()\n # Most devices give a list of their available frequencies.\n available_freqs = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies'])\n\n # Check for message like '/system/bin/sh: file not found'\n if available_freqs and '/system/bin/sh' not in available_freqs:\n available_freqs = sorted(\n int(i) for i in available_freqs.strip().split())\n else:\n raise Exception('Could not get list of available frequencies: %s' %\n available_freqs)\n\nmaxfreq = available_freqs[-1]\ntarget = int(round(maxfreq * target_percent))\nfreq = maxfreq\nfor f in reversed(available_freqs):\n if f <= target:\n freq = f\n break\n\nprint 'Setting frequency to %d' % freq\n\nsubprocess.check_output([ADB, 'shell', 'echo \"userspace\" > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'])\n# If scaling_max_freq is lower than our attempted setting, it won't take.\n# We must set min first, because if we try to set max to be less than min\n# (which sometimes happens after certain devices reboot) it returns a\n# perplexing permissions error.\nsubprocess.check_output([ADB, 'shell', 'echo 0 > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq'])\nsubprocess.check_output([ADB, 'shell', 'echo %d > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq' % freq])\nsubprocess.check_output([ADB, 'shell', 'echo %d > '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed' % freq])\ntime.sleep(5)\nactual_freq = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq']).strip()\nif actual_freq != str(freq):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_freq, freq))\n", "/usr/bin/adb.1.0.35", "Nexus7", "1.0" @@ -682,6 +682,7 @@ "@@@STEP_LOG_LINE@python.inline@target_percent = float(sys.argv[3])@@@", "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", + "@@@STEP_LOG_LINE@python.inline@print log@@@", "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", "@@@STEP_LOG_LINE@python.inline@@@@", @@ -696,6 +697,14 @@ "@@@STEP_LOG_LINE@python.inline@ available_freqs = [51000, 102000, 204000, 340000, 475000, 640000, 760000,@@@", "@@@STEP_LOG_LINE@python.inline@ 860000, 1000000, 1100000, 1200000]@@@", "@@@STEP_LOG_LINE@python.inline@else:@@@", + "@@@STEP_LOG_LINE@python.inline@ # Temporary logging to get a sense of what devices have multiple cpus@@@", + "@@@STEP_LOG_LINE@python.inline@ try:@@@", + "@@@STEP_LOG_LINE@python.inline@ print subprocess.check_output([ADB, 'shell', 'cat ',@@@", + "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu?/cpufreq/affected_cpus'])@@@", + "@@@STEP_LOG_LINE@python.inline@ print subprocess.check_output([ADB, 'shell', 'cat ',@@@", + "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu?/cpufreq/scaling_available_frequencies'])@@@", + "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@", + "@@@STEP_LOG_LINE@python.inline@ print e.output.strip()@@@", "@@@STEP_LOG_LINE@python.inline@ # Most devices give a list of their available frequencies.@@@", "@@@STEP_LOG_LINE@python.inline@ available_freqs = subprocess.check_output([ADB, 'shell', 'cat '@@@", "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies'])@@@", @@ -721,11 +730,14 @@ "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"userspace\" > '@@@", "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'])@@@", "@@@STEP_LOG_LINE@python.inline@# If scaling_max_freq is lower than our attempted setting, it won't take.@@@", - "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %d > '@@@", - "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq' % freq])@@@", + "@@@STEP_LOG_LINE@python.inline@# We must set min first, because if we try to set max to be less than min@@@", + "@@@STEP_LOG_LINE@python.inline@# (which sometimes happens after certain devices reboot) it returns a@@@", + "@@@STEP_LOG_LINE@python.inline@# perplexing permissions error.@@@", "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo 0 > '@@@", "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq'])@@@", "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %d > '@@@", + "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq' % freq])@@@", + "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %d > '@@@", "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed' % freq])@@@", "@@@STEP_LOG_LINE@python.inline@time.sleep(5)@@@", "@@@STEP_LOG_LINE@python.inline@actual_freq = subprocess.check_output([ADB, 'shell', 'cat '@@@", -- cgit v1.2.3