2
2
3
3
prf () { printf %s\\ n " $* " ; }
4
4
5
- s= " 0 " ; max_t=" 0" ; tdiff=" 0" ; display=" " ; new_spd=" 0" ; num_gpus=" 0" ; CDPATH=" "
6
- num_fans=" 0" ; current_t=" 0" ; z=$0 ; fname=" " ; check_diff1=" " ; check_diff2=" "
5
+ max_t=" 0" ; tdiff=" 0" ; display=" " ; new_spd=" 0" ; num_gpus=" 0" ; CDPATH=" "
6
+ num_fans=" 0" ; current_t=" 0" ; z=$0 ; fname=" " ; check_diff1=" 0 " ; check_diff2=" 0 "
7
7
fcurve_len=" 0" ; num_gpus_loop=" 0" ; declare -a old_t=(); declare -a exp_sp=()
8
8
mnt=0; mxt=0; ot=0; declare -a es=(); fcurve_len2=" 0" ; declare -a exp_sp2=()
9
- max_t2=" 0" ; num_fans_loop=" 0" ; debug=" 0" ; e=" 0" ; gpu_cmd=" nvidia-settings"
9
+ max_t2=" 0" ; num_fans_loop=" 0" ; debug=" 0" ; e=" 0" ; sleep_override=" "
10
+ gpu_cmd=" nvidia-settings"
10
11
11
12
usage=" Usage: $( basename " $0 " ) [OPTION]...
12
13
16
17
-D run in daemon mode (background process)
17
18
-h show this help text
18
19
-l enable logging to stdout
20
+ -s set the sleep time (in seconds)
19
21
-v show the current version of this script"
20
22
21
23
{ \u nalias command ; \u nset -f command ; } > /dev/null 2>&1
38
40
fi
39
41
conf_file=$( dirname -- " $conf_file " ) " /config"
40
42
41
- while getopts " :h :c: :d: :D :l :v :x" opt; do
43
+ while getopts " :h :c: :d: :D :l :v :x :s: " opt; do
42
44
case $opt in
43
45
c) conf_file=" $OPTARG " ;;
44
46
d) display=" -c $OPTARG " ;;
45
47
h) e=1; prf " $usage " >&2 ;;
46
48
D) e=1; nohup ./temp.sh > /dev/null 2>&1 & ;;
47
49
l) debug=" 1" ;;
50
+ s) sleep_override=" $OPTARG " ;;
48
51
v) e=1; prf " Version 17" ;;
49
52
x) gpu_cmd=" ../nssim/nssim nvidia-settings" ;;
50
53
\? ) e=1; prf " Invalid option: -$OPTARG " >&2 ;;
@@ -97,10 +100,10 @@ finish() {
97
100
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98
101
echo_info () {
99
102
if [ " $new_spd " -ne " ${es[$((ot-mnt))]} " ]; then z=" y" ; else z=" n" ; fi
100
- prf " t=$current_t oldt=$ot tdiff=$tdiff slp=$s gpu=$gpu
101
- nspd?=${es[$((current_t-mnt))]} nspd=$new_spd cd=$chd maxt=$mxt
102
- mint=$mnt oldspd=${es[$((ot-mnt))]} fan=$fan z= $z
103
- "
103
+ e= " t=$current_t oldt=$ot tdiff=$tdiff slp=$sleep_time gpu=$gpu z= $z "
104
+ e= " $e nspd?=${es[$((current_t-mnt))]} nspd=$new_spd cd=$chd maxt=$mxt "
105
+ e= " $e mint=$mnt oldspd=${es[$((ot-mnt))]} fan=$fan "
106
+ prf " $e "
104
107
}
105
108
106
109
loop_cmds () {
@@ -114,9 +117,7 @@ loop_cmds() {
114
117
tdiff=" $(( current_t- ot)) "
115
118
fi
116
119
117
- if [ " $tdiff " -lt " $chd " ]; then
118
- s=" $short_s "
119
- else
120
+ if [ " $tdiff " -ge " $chd " ]; then
120
121
if [ " $current_t " -lt " $mnt " ]; then
121
122
new_spd=" 0"
122
123
elif [ " $current_t " -lt " $mxt " ]; then
@@ -128,6 +129,7 @@ loop_cmds() {
128
129
set_speed " $new_spd "
129
130
fi
130
131
old_t[" $fan " ]=" $current_t "
132
+ tdiff=" 0"
131
133
fi
132
134
fi
133
135
@@ -144,6 +146,8 @@ if ! [ -f "$conf_file" ]; then
144
146
fi
145
147
source " $conf_file " ; prf " Configuration file: $conf_file "
146
148
149
+ if ! [ -z " $sleep_override " ]; then sleep_time=" $sleep_override " ; fi
150
+
147
151
# Check for any user errors in config file
148
152
if ! [ " ${# fcurve[@]} " -eq " ${# tcurve[@]} " ]; then
149
153
prf " fcurve and tcurve don't match up!" ; exit 1
190
194
for i in $( seq 0 " $(( fcurve_len2 - 1 )) " ) ; do
191
195
check_diff2=" $(( check_diff2 + tcurve2 [$((i+ 1 )) ]-tcurve2[i]))"
192
196
done
193
- check_diff1=" $(( (check_diff1 / fcurve_len) - long_s + short_s - 1 )) "
194
- check_diff2=" $(( (check_diff2 / fcurve_len2 ) - long_s + short_s - 1 )) "
197
+ check_diff1=" $(( (check_diff1 / ( fcurve_len- 1 )) -sleep_time ))"
198
+ check_diff2=" $(( (check_diff2 / ( fcurve_len2 - 1 )) -sleep_time ))"
195
199
196
200
set_fan_control " $num_gpus_loop " " 1"
197
201
@@ -245,20 +249,18 @@ if [ "$num_gpus" -eq "1" ]; then
245
249
fan=" $default_fan "
246
250
set_stuff " $fan "
247
251
while true ; do
248
- s=" $long_s "
249
252
ot=" ${old_t[$fan]} "
250
253
loop_cmds
251
- sleep " $s "
254
+ sleep " $sleep_time "
252
255
done
253
256
else
254
257
prf " Started process for n-GPUs and n-Fans"
255
258
while true ; do
256
- s=" $long_s "
257
259
for fan in $( seq 0 " $num_fans_loop " ) ; do
258
260
set_stuff " $fan "
259
261
ot=" ${old_t[$fan]} "
260
262
loop_cmds
261
263
done
262
- sleep " $s "
264
+ sleep " $sleep_time "
263
265
done
264
266
fi
0 commit comments