@@ -39,15 +39,15 @@ init_module_power()
39
39
40
40
# Updated 2023-03-28 by Kent
41
41
# Can now use intel RAPL to get Energy, Watts=Energy_uj_now - Energy_uj_prev/delta_time
42
- # source $REMORA_OUTDIR/remora_env.txt
42
+ # source $REMORA_OUTDIR/remora_env.txt
43
43
44
44
local remora_date_precision=" ms"
45
45
local remora_date_format=' +%s.%3N'
46
46
47
47
local REMORA_POWER_IGNORE # 0 == don't ignore 1 == ignore
48
48
local REMORA_POWER_COLLECTOR # sensors or intel_rapl
49
49
50
- local sockets sockets_m1
50
+ local sockets
51
51
local has_sensors sensors base_values=()
52
52
local soc_num
53
53
@@ -57,56 +57,22 @@ init_module_power()
57
57
sockets=1 # default
58
58
hash lscpu 2> /dev/null
59
59
[[ $? == 0 ]] && sockets=$( lscpu | grep ' Socket(s):' | awk ' {print $2}' )
60
- sockets_m1=$(( $sockets - 1 ))
61
-
62
- # Check if sensors exists. Use hash for this and the result of the command
63
- hash sensors 2> /dev/null
64
- has_sensors=$? # 0/1 yes/no
65
- if [[ has_sensors == 0 ]]; then # test whether sensors provides "power1:"
66
- sensors | grep power1 2> /dev/null
67
- REMORA_POWER_IGNORE=${PIPESTATUS[1]} # if power1 found status=0,set don't ignore
68
- if [[ $REMORA_POWER_IGNORE == 0 ]]; then # sensors have power
69
- REMORA_POWER_COLLECTOR=sensors # assuming KNL & only one socket
70
-
71
- # base_values[0]=`date +%s` # W are no longer putting in a base for Power sensors
72
- # base_values[1]=`sensors | grep power1 | awk '{print $2;}'` #TODO: multiple sockets with sensors cmd
73
- fi
74
- else
75
- REMORA_POWER_IGNORE=1 # specify no power utility so far
76
- REMORA_POWER_COLLECTOR=none
77
- fi
78
-
79
- if [[ $REMORA_POWER_IGNORE == 1 ]]; then # test for intel_rapl
80
60
81
- if [[ $REMORA_POWER_IGNORE == 1 ]]; then # test for intel_rapl
61
+ if [[ REMORA_POWER_COLLECTOR == sensors ]]; then
62
+ base_values[0]=` date +%s` # No longer in use (was for KNL)
63
+ base_values[1]=` sensors | grep power1 | awk ' {print $2;}' ` # TODO: if revised, get power 4 all sockets
64
+ fi
82
65
83
- energy_readable=TRUE # Make sure all energy file are readable
84
- for (( soc_num = 0 ; soc_num < $sockets ; soc_num ++ )) ; do
85
- [[ ! -r /sys/devices/virtual/powercap/intel-rapl/intel-rapl: $soc_num /energy_uj ]] && energy_readable=FALSE
86
- energy_readable=FALSE
87
-
66
+ if [[ REMORA_POWER_COLLECTOR == intel_rapl ]] ; then
67
+ base_values[0]= ` date $remora_date_format `
68
+ for i in $( seq 1 $sockets ) ; do
69
+ soc_num= $(( $i - 1 ))
70
+ base_values[ $i ]= $( < /sys/devices/virtual/powercap/intel-rapl/intel-rapl: $soc_num /energy_uj )
88
71
done
89
- if [[ $energy_readable == TRUE ]]; then
90
- REMORA_POWER_IGNORE=0
91
- REMORA_POWER_COLLECTOR=intel_rapl
92
- # base_values[0]=`date +%s`
93
- base_values[0]=` date $remora_date_format `
94
- for i in $( seq 1 $sockets ) ; do # get base values
95
- soc_num=$(( $i - 1 ))
96
- base_values[$i ]=$( < /sys/devices/virtual/powercap/intel-rapl/intel-rapl:$soc_num /energy_uj)
97
- done
98
- fi
99
- fi
100
-
101
- REMORA_MASTER=` head -n 1 $REMORA_OUTDIR /remora_nodes.txt`
102
-
103
- if [[ " $REMORA_NODE " == " $REMORA_MASTER " ]]; then
104
- echo " export REMORA_POWER_IGNORE=$REMORA_POWER_IGNORE " >> $REMORA_OUTDIR /remora_env.txt
105
- echo " export REMORA_POWER_COLLECTOR=$REMORA_POWER_COLLECTOR " >> $REMORA_OUTDIR /remora_env.txt
106
72
fi
107
73
108
74
if [[ " $REMORA_POWER_IGNORE " == 1 ]]; then
109
- [[ " $REMORA_VERBOSE " == 1 ]] && echo " -> power not initialized, sensors not found."
75
+ [[ " $REMORA_VERBOSE " == 1 ]] && echo " -> power not initialized, sensors not found."
110
76
return 1
111
77
fi
112
78
@@ -137,6 +103,7 @@ init_module_power()
137
103
# either from sensors or energy differences.
138
104
139
105
# sleep 1 && echo remove sleep in $0 #used for testing, assure at least 1s before data collection
106
+
140
107
}
141
108
142
109
collect_data_power ()
@@ -152,9 +119,10 @@ collect_data_power()
152
119
local POWER_FILE=$REMORA_TMPDIR /power_${REMORA_NODE} .txt
153
120
local ENERGY_FILE=$REMORA_TMPDIR /energy_${REMORA_NODE} .txt
154
121
122
+ echo " HERE collect_data_power $REMORA_POWER_IGNORE " >> /home1/00770/milfeld/R
155
123
[[ $REMORA_POWER_IGNORE -ne 0 ]] && return 1
156
124
157
- local sockets sockets_m1
125
+ local sockets
158
126
local time_stamp time_base time_seq power
159
127
160
128
local prev_line
@@ -167,7 +135,6 @@ collect_data_power()
167
135
sockets=1 # default
168
136
hash lscpu 2> /dev/null
169
137
[[ $? == 0 ]] && sockets=$( lscpu | grep ' Socket(s):' | awk ' {print $2}' )
170
- sockets_m1=$(( $sockets - 1 ))
171
138
172
139
if [[ $REMORA_POWER_COLLECTOR == sensors ]]; then # for KNL, single socket
173
140
time_stamp=` date $remora_date_format `
@@ -184,7 +151,7 @@ collect_data_power()
184
151
time_stamp=` date $remora_date_format `
185
152
time_str=$( printf " %-17s" " $time_stamp " )
186
153
line=$time_str
187
- for soc_num in $( seq 0 $sockets_m1 ) ; do
154
+ for (( soc_num = 0 ; soc_num < $sockets ; soc_num ++ ) ); do
188
155
energy_uj=$( < /sys/devices/virtual/powercap/intel-rapl/intel-rapl:$soc_num /energy_uj)
189
156
addon=$( printf " %-17s" " $energy_uj " )
190
157
line+=$addon
@@ -200,7 +167,7 @@ collect_data_power()
200
167
line=$time_str
201
168
202
169
prev_line=( " ${prev_line[@]: 1} " ) # <- acts like the shift used for args.
203
- for soc_num in $( seq 0 $sockets_m1 ) ; do
170
+ for (( soc_num = 0 ; soc_num < $sockets ; soc_num ++ ) ); do
204
171
205
172
delta=$( bc <<< " scale=2; ${energy[$soc_num]} - ${prev_line[$soc_num]}" )
206
173
# #If delta is negative, counter wrapped
@@ -266,7 +233,7 @@ plot_data_power()
266
233
local POWER_TXT_FILE=$REMORA_TMPDIR /power_${node} .txt
267
234
local ENERGY_TXT_FILE=$REMORA_TMPDIR /energy_${node} .txt
268
235
269
- local sockets sockets_m1
236
+ local sockets
270
237
271
238
local ln_num iter row word # common to power and energy_uj blocks.
272
239
local using_power_data=no
@@ -288,7 +255,6 @@ plot_data_power()
288
255
sockets=1 # default
289
256
hash lscpu 2> /dev/null
290
257
[[ $? == 0 ]] && sockets=$( lscpu | grep ' Socket(s):' | awk ' {print $2}' )
291
- sockets_m1=$(( $sockets - 1 ))
292
258
293
259
printf " %s \n" " <html>" > $FILE
294
260
printf " %s \n" " <head>" >> $FILE
@@ -301,7 +267,7 @@ plot_data_power()
301
267
printf " %s \n" " var data = new google.visualization.DataTable();" >> $FILE
302
268
printf " %s \n" " data.addColumn('number', 'Execution Time (sec)');" >> $FILE
303
269
304
- for soc_num in $( seq 0 $sockets_m1 ) ; do
270
+ for (( soc_num = 0 ; soc_num < $sockets ; soc_num ++ ) ); do
305
271
printf " %s \n" " data.addColumn('number', 'socket_$soc_num ');" >> $FILE
306
272
done
307
273
printf " %s\n" " data.addRows([" >> $FILE
@@ -441,14 +407,15 @@ finalize_module_power()
441
407
# Uses: lscpu to determine # of sockets
442
408
443
409
REMORA_NODE=$1 ; REMORA_OUTDIR=$2 ; REMORA_TMPDIR=$3
444
-
410
+ echo " HERE finalize_module_power $REMORA_POWER_IGNORE " >> /home1/00770/milfeld/R
445
411
# RemPltRes must be set, and not equal to zero
446
412
source $REMORA_OUTDIR /remora_env.txt
447
413
if [[ -z ${REMORA_PLOT_RESULTS} ]] || [[ " $REMORA_PLOT_RESULTS " -eq " 0" ]] ; then
448
414
return
449
415
fi
450
416
451
- [[ $REMORA_POWER_IGNORE -ne 0 ]] && return
417
+ [[ $REMORA_POWER_IGNORE -ne 0 ]] && return
418
+ echo " NEVER HERE AFTER RETURN finalize_module_power $REMORA_POWER_IGNORE " >> /home1/00770/milfeld/R
452
419
453
420
# NODE PLOT
454
421
@@ -529,7 +496,7 @@ finalize_module_power()
529
496
printf " %s \n" " var data = new google.visualization.DataTable();" >> $FILE
530
497
printf " %s \n" " data.addColumn('number', 'Execution Time (s)');" >> $FILE
531
498
532
- for soc_num in $( seq 0 $n_socs_m1 ) ; do
499
+ for (( soc_num = 0 ; soc_num < $sockets ; soc_num ++ ) ); do
533
500
printf " %s \n" " data.addColumn('number', 'socket_$soc_num ');" >> $FILE
534
501
done
535
502
printf " %s\n" " data.addRows([" >> $FILE
0 commit comments