#!/bin/bash # Copyright 2014 the V8 project authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. CPUPATH=/sys/devices/system/cpu MAXID=$(cat $CPUPATH/present | awk -F- '{print $NF}') set_governor() { echo "Setting CPU frequency governor to \"$1\"" for (( i=0; i<=$MAXID; i++ )); do echo "$1" > $CPUPATH/cpu$i/cpufreq/scaling_governor done } enable_cores() { # $1: How many cores to enable. for (( i=1; i<=$MAXID; i++ )); do if [ "$i" -lt "$1" ]; then echo 1 > $CPUPATH/cpu$i/online else echo 0 > $CPUPATH/cpu$i/online fi done } dual_core() { echo "Switching to dual-core mode" enable_cores 2 } single_core() { echo "Switching to single-core mode" enable_cores 1 } all_cores() { echo "Reactivating all CPU cores" enable_cores $((MAXID+1)) } limit_cores() { # $1: How many cores to enable. echo "Limiting to $1 cores" enable_cores $1 } case "$1" in fast | performance) set_governor "performance" ;; slow | powersave) set_governor "powersave" ;; default | ondemand) set_governor "ondemand" ;; dualcore | dual) dual_core ;; singlecore | single) single_core ;; allcores | all) all_cores ;; limit_cores) if [ $# -ne 2 ]; then echo "Usage $0 limit_cores <num>" exit 1 fi limit_cores $2 ;; *) echo "Usage: $0 fast|slow|default|singlecore|dualcore|all|limit_cores" exit 1 ;; esac