Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit bb27766

Browse filesBrowse files
meteorqz6aduh95
authored andcommitted
benchmark: improve cpu.sh for safety and usability
The previous cpu.sh script was minimal. This change makes it a more robust and safe utility for managing CPU governors during benchmarks. The script now includes: - Checks to ensure it only runs on Linux with root privileges. - A `reset` command to restore the CPU governor to a dynamically detected system default. - A `get` command to check the current governor for all cores. - An improved usage guide and clearer feedback messages. PR-URL: #60162 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 2e55c6a commit bb27766
Copy full SHA for bb27766

File tree

Expand file treeCollapse file tree

1 file changed

+54
-2
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+54
-2
lines changed
Open diff view settings
Collapse file

‎benchmark/cpu.sh‎

Copy file name to clipboardExpand all lines: benchmark/cpu.sh
+54-2Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,73 @@ CPUPATH=/sys/devices/system/cpu
44

55
MAXID=$(cat $CPUPATH/present | awk -F- '{print $NF}')
66

7+
[ "$(uname -s || true)" = "Linux" ] || \
8+
echo "Warning: This script supports Linux only." >&2
9+
10+
[ "$(id -u || true)" = "0" ] || \
11+
echo "Warning: This script typically needs root access to modify CPU governor. Consider running it with sudo." >&2
12+
13+
get_default_governor() {
14+
case "$(cat "$CPUPATH/cpu0/cpufreq/scaling_available_governors")" in
15+
*"schedutil"*) echo "schedutil" ;;
16+
*"ondemand"*) echo "ondemand" ;;
17+
*"conservative"*) echo "conservative";;
18+
*) echo "powersave" ;;
19+
esac
20+
21+
}
22+
723
set_governor() {
8-
echo "Setting CPU frequency governor to \"$1\""
24+
governor_name="$1"
25+
26+
echo "Setting governor for all CPU cores to \"$governor_name\"..."
27+
928
i=0
1029
while [ "$i" -le "$MAXID" ]; do
1130
echo "$1" > "$CPUPATH/cpu$i/cpufreq/scaling_governor"
1231
i=$((i + 1))
1332
done
33+
34+
echo "Done."
35+
}
36+
37+
usage() {
38+
default_gov=$(get_default_governor)
39+
echo "CPU Governor Management Script"
40+
echo "----------------------------------------------------------------------------"
41+
echo "Usage: $0 [command]"
42+
echo
43+
echo "Commands:"
44+
echo " fast Sets the governor to 'performance' for maximum speed."
45+
echo " (Warning: Increases heat/power use. Use for short-term tasks.)"
46+
echo
47+
echo " reset Resets the governor to the system's recommended default ('$default_gov')."
48+
echo
49+
echo " get Shows the current CPU governor for ALL cores."
50+
echo "----------------------------------------------------------------------------"
1451
}
1552

1653
case "$1" in
1754
fast | performance)
55+
echo "Warning: The 'performance' mode locks the CPU at its highest speed."
56+
echo "It is highly recommended to 'reset' after your task is complete."
1857
set_governor "performance"
1958
;;
59+
60+
reset | default)
61+
default_governor=$(get_default_governor)
62+
set_governor "$default_governor"
63+
;;
64+
65+
get | status)
66+
echo "Current governor status for all cores:"
67+
grep . "$CPUPATH"/cpu*/cpufreq/scaling_governor
68+
;;
69+
2070
*)
21-
echo "Usage: $0 fast"
71+
usage
2272
exit 1
2373
;;
2474
esac
75+
76+
exit 0

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.