Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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=""
- # Not available in original scripts
- CPUFREQ_GOVERN=""
- CPUFREQ_ALTGOVERN=""
- # 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="ondemand"
- ALTGOVERNOR="powersave"
- 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
- # Original Scripts
- # Commented by me :)
- #
- #if [ -n "$GOVERNOR" ] ; then
- # CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --governor $GOVERNOR"
- #fi
- # New Script
- if [ -n "$GOVERNOR" ] ; then
- CPUFREQ_GOVERN="--governor $GOVERNOR"
- fi
- if [ -n "$ALTGOVERNOR" ] ; then
- CPUFREQ_ALTGOVERN="--governor $ALTGOVERNOR"
- fi
- CPUS=$(cat /proc/stat|sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p')
- #GETTING CPUS AMOUNT
- CPUSAMOUNT=0;
- for cpu in $CPUS ; do
- CPUSAMOUNT=$((CPUSAMOUNT + 1))
- done
- #-----------------------------------------
- RETVAL=0
- case "$1" in
- start|force-reload|restart|reload)
- log_action_begin_msg "$DESC: Setting $GOVERNOR CPUFreq governor"
- if check_governor_avail ; then
- # ORIGINAL SCRIPT
- #
- # for cpu in $CPUS ; do
- # log_action_cont_msg "CPU${cpu}"
- # $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS 2>&1 > /dev/null || \
- # RETVAL=$?
- # done
- # -------------------------------------------------------
- # My Script:
- # Set OnDemand Governor for the first CPU
- # Set Powersave Governor for the rest CPUs
- # -------------------------------------------------------
- #
- # CPUS=$(cat /proc/stat | sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p'| tail -1)
- if [[ $CPUSAMOUNT -eq 1 ]] ; then
- $CPUFREQ_SET --cpu 0 $CPUFREQ_OPTIONS $CPUFREQ_GOVERN 2>&1 > /dev/null || \
- RETVAL=$?
- else
- if [ -n "$ALTGOVERNOR" ]; then
- $CPUFREQ_SET --cpu 0 $CPUFREQ_OPTIONS $CPUFREQ_GOVERN 2>&1 > /dev/null || \
- RETVAL=$?
- for ((cpu=1; cpu < CPUSAMOUNT; cpu++)) do
- $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS $CPUFREQ_ALTGOVERN 2>&1 > /dev/null || \
- RETVAL=$?
- done
- else
- for ((cpu=0; cpu < CPUAMOUNT; cpu++)) do
- $CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS $CPUFREQ_GOVERN 2>&1 > /dev/null || \
- RETVAL=$?
- done
- fi
- fi
- #
- # -------------------------------------------------------
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement