From 68824daaae4bfa21ee233050ebd80b30b87479f1 Mon Sep 17 00:00:00 2001 From: Quad Date: Thu, 20 May 2021 09:42:54 +0200 Subject: [PATCH] Add incomplete TDP script --- tdp | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100755 tdp diff --git a/tdp b/tdp new file mode 100755 index 0000000..571017e --- /dev/null +++ b/tdp @@ -0,0 +1,119 @@ +#! /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