1#!/bin/bash
2# Copyright 2014 the V8 project authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6CPUPATH=/sys/devices/system/cpu
7
8MAXID=$(cat $CPUPATH/present | awk -F- '{print $NF}')
9
10set_governor() {
11  echo "Setting CPU frequency governor to \"$1\""
12  for (( i=0; i<=$MAXID; i++ )); do
13    echo "$1" > $CPUPATH/cpu$i/cpufreq/scaling_governor
14  done
15}
16
17dual_core() {
18  echo "Switching to dual-core mode"
19  for (( i=2; i<=$MAXID; i++ )); do
20    echo 0 > $CPUPATH/cpu$i/online
21  done
22}
23
24single_core() {
25  echo "Switching to single-core mode"
26  for (( i=1; i<=$MAXID; i++ )); do
27    echo 0 > $CPUPATH/cpu$i/online
28  done
29}
30
31
32all_cores() {
33  echo "Reactivating all CPU cores"
34  for (( i=2; i<=$MAXID; i++ )); do
35    echo 1 > $CPUPATH/cpu$i/online
36  done
37}
38
39case "$1" in
40  fast | performance)
41    set_governor "performance"
42    ;;
43  slow | powersave)
44    set_governor "powersave"
45    ;;
46  default | ondemand)
47    set_governor "ondemand"
48    ;;
49  dualcore | dual)
50    dual_core
51    ;;
52  singlecore | single)
53    single_core
54    ;;
55  allcores | all)
56    all_cores
57    ;;
58  *)
59    echo "Usage: $0 fast|slow|default|singlecore|dualcore|all"
60    exit 1
61    ;;
62esac 
63