#!/bin/bash if [ "$1" = "--help" ] ; then echo "Usage: cpugov [new_governor [new_speed]]" echo "If no arguments are supplied, the current governor is returned." echo "new_speed applies only if new_governor is userspace." exit fi CPUGOV_FILENAME="/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" CPUSETSPEED_FILENAME="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" CPUGETSPEED_FILENAME="/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" OLDGOV=`cat $CPUGOV_FILENAME` OLDSPEED=`cat $CPUGETSPEED_FILENAME 2> /dev/null` WANT_NEWGOV=$1 WANT_NEWSPEED=$2 if [ -n "$WANT_NEWSPEED" ] ; then WANT_NEWSPEED=`expr $WANT_NEWSPEED \* 1000` fi # Let the user know if the operation is going to have no effect. if [ "$WANT_NEWGOV" = "$OLDGOV" -a "$WANT_NEWSPEED" = "$OLDSPEED" ] ; then if [ -n "$WANT_NEWSPEED" ] ; then echo "Speed unchanged." else echo "Governor unchanged." fi exit fi # Set new governor and speed if desired. if [ -n "$WANT_NEWGOV" ] ; then echo $WANT_NEWGOV > $CPUGOV_FILENAME if [ -n "$WANT_NEWSPEED" ] ; then if [ -w $CPUSETSPEED_FILENAME ] ; then echo $WANT_NEWSPEED > $CPUSETSPEED_FILENAME else echo "Unable to change speed." fi fi fi # Read new governer and speed. NEWGOV=`cat $CPUGOV_FILENAME` NEWSPEED=`cat $CPUGETSPEED_FILENAME 2> /dev/null` # If they were trying to set the new governor, make sure it worked. if [ -n "$WANT_NEWGOV" ] ; then if [ "$NEWGOV" != "$WANT_NEWGOV" ] ; then echo "Governor NOT set!" echo -n "Current governor: " else echo -n "OK: " fi fi # Show the new governor and speed. echo -n $NEWGOV [ $NEWGOV == "userspace" -o $NEWGOV == "ondemand" ] && echo -n " "`expr $NEWSPEED / 1000`"MHz" echo