diff --git a/benchmark/cpu.sh b/benchmark/cpu.sh index 9c9dd7fa4ddc58..7e35c0ef0de8c8 100755 --- a/benchmark/cpu.sh +++ b/benchmark/cpu.sh @@ -4,21 +4,73 @@ CPUPATH=/sys/devices/system/cpu MAXID=$(cat $CPUPATH/present | awk -F- '{print $NF}') +[ "$(uname -s || true)" = "Linux" ] || \ + echo "Warning: This script supports Linux only." >&2 + +[ "$(id -u || true)" = "0" ] || \ + echo "Warning: This script typically needs root access to modify CPU governor. Consider running it with sudo." >&2 + +get_default_governor() { + case "$(cat "$CPUPATH/cpu0/cpufreq/scaling_available_governors")" in + *"schedutil"*) echo "schedutil" ;; + *"ondemand"*) echo "ondemand" ;; + *"conservative"*) echo "conservative";; + *) echo "powersave" ;; + esac + +} + set_governor() { - echo "Setting CPU frequency governor to \"$1\"" + governor_name="$1" + + echo "Setting governor for all CPU cores to \"$governor_name\"..." + i=0 while [ "$i" -le "$MAXID" ]; do echo "$1" > "$CPUPATH/cpu$i/cpufreq/scaling_governor" i=$((i + 1)) done + + echo "Done." +} + +usage() { + default_gov=$(get_default_governor) + echo "CPU Governor Management Script" + echo "----------------------------------------------------------------------------" + echo "Usage: $0 [command]" + echo + echo "Commands:" + echo " fast Sets the governor to 'performance' for maximum speed." + echo " (Warning: Increases heat/power use. Use for short-term tasks.)" + echo + echo " reset Resets the governor to the system's recommended default ('$default_gov')." + echo + echo " get Shows the current CPU governor for ALL cores." + echo "----------------------------------------------------------------------------" } case "$1" in fast | performance) + echo "Warning: The 'performance' mode locks the CPU at its highest speed." + echo "It is highly recommended to 'reset' after your task is complete." set_governor "performance" ;; + + reset | default) + default_governor=$(get_default_governor) + set_governor "$default_governor" + ;; + + get | status) + echo "Current governor status for all cores:" + grep . "$CPUPATH"/cpu*/cpufreq/scaling_governor + ;; + *) - echo "Usage: $0 fast" + usage exit 1 ;; esac + +exit 0