@ -5,21 +5,19 @@
# License: MIT
# https://github.com/tteck/Proxmox/raw/main/LICENSE
function header_info {
cat <<"EOF"
header_info( ) {
clear
cat <<EOF
__________ __ __
/ ____/ __ \/ / / /
/ / / /_/ / / / /
/ /___/ ____/ /_/ /
\_ ___/_/ \_ ___/
Scaling Governors
EOF
}
clear
header_info
set -e
while true; do
header_info
read -p "View CPU Scaling Governors. Proceed(y/n)?" yn
case $yn in
[ Yy] *) break ; ;
@ -27,89 +25,34 @@ while true; do
*) echo "Please answer yes or no." ; ;
esac
done
clear
show_menu( ) {
CL = $( echo "\033[m" )
GN = $( echo "\033[32m" )
BL = $( echo "\033[36m" )
YW = $( echo "\033[33m" )
fgred = $( echo "\033[31m" )
header_info
CK = $( uname -r)
IP = $( hostname -I)
# MAC=$(cat /sys/class/net/eno1/address)
ACSG = $( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)
CCSG = $( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
echo -e " ${ YW } Proxmox IP ${ BL } ${ IP } ${ CL } "
echo -e " ${ YW } MAC Address ${ BL } ${ MAC } ${ CL } "
echo -e " ${ YW } Current Kernel ${ BL } ${ CK } ${ CL } "
echo -e " \n ${ YW } Available CPU Scaling Governors
${ BL } ${ ACSG } ${ CL } "
echo -e " \n ${ YW } Current CPU Scaling Governor
${ BL } ${ CCSG } ${ CL } "
printf " \n ${ fgred } Only Select Available CPU Scaling Governors From Above ${ CL } \n \n "
printf " ${ BL } ** ${ YW } 1) ${ GN } Switch to ${ BL } conservative ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " ${ BL } ** ${ YW } 2) ${ GN } Switch to ${ BL } ondemand ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " ${ BL } ** ${ YW } 3) ${ GN } Switch to ${ BL } userspace ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " ${ BL } ** ${ YW } 4) ${ GN } Switch to ${ BL } powersave ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " ${ BL } ** ${ YW } 5) ${ GN } Switch to ${ BL } performance ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " ${ BL } ** ${ YW } 6) ${ GN } Switch to ${ BL } schedutil ${ CL } ${ GN } CPU Scaling Governor ${ CL } \n "
printf " \n ${ fgred } NOTE: Settings return to default after reboot ${ CL } \n "
printf " \n Please choose an option from the menu and press [ENTER] or ${ fgred } x ${ CL } to exit. "
read opt
echo -e " \nProxmox IP \033[36m $( hostname -I) \033[m "
echo -e " Current Kernel \033[36m $( uname -r) \033[m\n "
available_governors = $( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)
echo -e " Available CPU Scaling Governors\n\033[36m ${ available_governors } \033[m\n "
echo -e " Current CPU Scaling Governor\n\033[36m $( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) \033[m\n "
options = ""
i = 1
for governor in $available_governors
do
options += " ** ${ i } ) \033[36m ${ governor } \033[m CPU Scaling Governor\n "
( ( i = i+1) )
done
echo -e " ${ options } "
echo -e "\033[31mNOTE: Settings return to default after reboot\033[m\n"
read -p "Please choose an option from the menu and press [ENTER] or x to exit." opt
}
clear
show_menu
while [ " $opt " != "" ] ; do
if [ " $opt " = "" ] ; then
while [ [ " $opt " != "" ] ] ; do
num_governors = $( echo " $available_governors " | wc -w)
if [ [ $opt -gt 0 ] ] && [ [ $opt -le $num_governors ] ] ; then
governor = $( echo " $available_governors " | cut -d' ' -f $opt )
echo " ${ governor } " | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
elif [ [ $opt = = "x" ] ] || [ [ $opt = = "\n" ] ] ; then
exit
else
case $opt in
1)
echo "conservative" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
2)
echo "ondemand" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
3)
echo "userspace" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
4)
echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
5)
echo "performance" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
6)
echo "schedutil" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clear
show_menu
; ;
x)
exit
; ;
\n )
exit
; ;
*)
clear
show_menu
; ;
esac
fi
show_menu
done