#!/bin/sh # Copyright 2021 The IREE Authors # # Licensed under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # Runs on an android device itself to set the frequency scaling governor for all # CPUs (default performance). ################################### WARNING #################################### # This will overheat the phone if it's not on a cooling plate, resulting in # # thermal throttling. To prevent anything catching on fire, the actual CPU # # frequencies will be throttled to below the maximum, skewing your results. # ################################################################################ set -euo pipefail GOVERNOR="${1:-performance}" echo "CPU info (before changing governor):" echo 'cpu\tgovernor\tcur\tmin\tmax' echo "------------------------------------------------" for i in `cat /sys/devices/system/cpu/present | tr '-' ' ' | xargs seq`; do \ echo "cpu${i}" | paste \ - \ "/sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_cur_freq" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_min_freq" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_max_freq"; \ done echo "Setting CPU frequency governor to ${GOVERNOR}" for i in `cat /sys/devices/system/cpu/present | tr '-' ' ' | xargs seq`; do \ echo "${GOVERNOR}" > \ "/sys/devices/system/cpu/cpu${i?}/cpufreq/scaling_governor"; \ done echo "CPU info (after changing governor):" echo 'cpu\tgovernor\tcur\tmin\tmax' echo "------------------------------------------------" for i in `cat /sys/devices/system/cpu/present | tr '-' ' ' | xargs seq`; do \ echo "cpu${i}" | paste \ - \ "/sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_cur_freq" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_min_freq" \ "/sys/devices/system/cpu/cpu${i}/cpufreq/cpuinfo_max_freq"; \ done