#!/bin/sh ### BEGIN INIT INFO # Provides: cpufrequtils # Required-Start: $remote_fs loadcpufreq # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: set CPUFreq kernel parameters # Description: utilities to deal with CPUFreq Linux # kernel support ### END INIT INFO # DESC="CPUFreq Utilities" PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin CPUFREQ_SET=/usr/bin/cpufreq-set CPUFREQ_INFO=/usr/bin/cpufreq-info CPUFREQ_OPTIONS="" # use lsb-base . /lib/lsb/init-functions # Which governor to use. Must be one of the governors listed in: # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors # # and which limits to set. Both MIN_SPEED and MAX_SPEED must be values # listed in: # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies # a value of 0 for any of the two variables will disabling the use of # that limit variable. # # WARNING: the correct kernel module must already be loaded or compiled in. # # Set ENABLE to "true" to let the script run at boot time. # # eg: ENABLE="true" # GOVERNOR="ondemand" # MAX_SPEED=1000 # MIN_SPEED=500 ENABLE="true" GOVERNOR="performance" MAX_SPEED="0" MIN_SPEED="0" check_governor_avail() { info="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors" if [ -f $info ] && grep -q "\<$GOVERNOR\>" $info ; then return 0; fi return 1; } [ -x $CPUFREQ_SET ] || exit 0 if [ -f /etc/default/cpufrequtils ] ; then . /etc/default/cpufrequtils fi # if not enabled then exit gracefully [ "$ENABLE" = "true" ] || exit 0 if [ -n "$MAX_SPEED" ] && [ $MAX_SPEED != "0" ] ; then CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --max $MAX_SPEED" fi if [ -n "$MIN_SPEED" ] && [ $MIN_SPEED != "0" ] ; then CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --min $MIN_SPEED" fi if [ -n "$GOVERNOR" ] ; then CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --governor $GOVERNOR" fi CPUS=$(cat /proc/stat|sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p') RETVAL=0 case "$1" in start|force-reload|restart|reload) log_action_begin_msg "$DESC: Setting $GOVERNOR CPUFreq governor" if check_governor_avail ; then for cpu in $CPUS ; do log_action_cont_msg "CPU${cpu}" $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS 2>&1 > /dev/null || \ RETVAL=$? done log_action_end_msg $RETVAL "" else log_action_cont_msg "disabled, governor not available" log_action_end_msg $RETVAL fi ;; stop) ;; *) echo "Usage: $0 {start|stop|restart|reload|force-reload}" exit 1 esac exit 0