win3-resources/tdp

120 lines
2.2 KiB
Plaintext
Raw Normal View History

2021-05-20 07:42:54 +00:00
#! /usr/bin/bash
# Set up help text
command_name=$(basename $0)
help_text="${command_name}: GDP Win 3 TDP management script
This script checks and sets the TDP using intel_rapl
Usage:
${command_name} COMMAND [ARGUMENTS]
Command:
check [ARG] Checks current TDP and prints it in watts
set WATT Setts TDP to the requested number in watts
help Prints this help text
COMMAND help Prints help for specified command"
check_help_text="${command_name} check [ARG]
Example:
${command_name} check --detail
Arguments:
--detail, -d Prints PL2 as well as PL1
--help Prints this help text"
set_help_text="${command_name} set WATT
Example:
${command_name} set 15
Arguments:
--help Prints this help text"
print_help () {
case $1 in
"check")
echo "$check_help_text"
;;
"set")
echo "$set_help_text"
;;
*)
echo "$help_text"
;;
esac
}
print_unknown () {
echo "Unknown command or incorrect arguments.
Try \"${command_name} help\" or \"${command_name} COMMAND --help\""
}
# End of help text
# Retrieves current TDP and prints it
check_tdp () {
if [ "$1" == "--detail" ] || [ "$1" == "-d" ]; then
echo "Placeholder"
echo "Extra placeholder"
elif [ -z "$1" ]; then
echo "Placeholder"
elif [ "$1" == "--help" ]; then
print_help "check"
else
print_unknown
fi
}
# Sets TDP to number provided as first argument
set_tdp () {
if [ -z "$1" ]; then
print_unknown
exit
elif [ "$1" == "--help" ]; then
print_help "set"
exit
fi
if ! [[ $1 =~ ^-?[0-9]+$ ]]; then
echo "TDP must be a plain number!)"
elif [[ ! "$@" == *"--force"* ]] || [ $1 -lt 8 ] || [ $1 -gt 28 ]; then
echo "TDP too high or low, should be between 8W and 28W"
else
#PL1
local watts=$1
local uwatts=$(expr $watts '*' 1000000)
#PL2
local watts2=$(expr $watts + 2)
local uwatts2=$(expr $watts2 '*' 1000000)
echo $uwatts
echo "PL1 is now ${watts}W (Long-term)"
echo "PL2 is now ${watts2}W (Short-term)"
fi
}
# Command handler
case $1 in
"check")
check_tdp "${@:2}"
;;
"set")
set_tdp "${@:2}"
;;
"help")
print_help
;;
*)
print_unknown
;;
esac