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