Skip to content

Commit 1c84524

Browse files
author
Inkedstinct
committed
[NLD] : Add exp protocole to check tools frequency capacities
1 parent d539de7 commit 1c84524

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

templates/frequencies_benchmark.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#HWPC RUN
2+
TEMPERATURE_START=$(get_average_temperature)
3+
docker run --rm -d --net=host --privileged --pid=host --name hwpc_{{ target_frequency }}_$i \
4+
-v /sys:/sys \
5+
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
6+
-v /tmp/power-api-sensor-reporting:/reporting \
7+
-v $(pwd):{{ hwpc_home_directory }} \
8+
powerapi/hwpc-sensor:1.4.0 \
9+
-n hwpc_{{ target_frequency }}_$i \
10+
-f {{ target_frequency }} \
11+
-p {{ hwpc_and_perf_configs.get(core_values[0]).unwrap().cgroup_basepath }} \
12+
-r {{ hwpc_and_perf_configs.get(core_values[0]).unwrap().output.type }} -U {{ hwpc_home_directory }}/${HWPC_AND_PERF_FREQUENCY_DIR}/frequency_{{ target_frequency }}_hwpc_and_perf_$i \
13+
{% if hwpc_alone_configs.get(core_values[0]).unwrap().system.rapl.events.len() > 0 %} -s "rapl" {%~ for event in hwpc_alone_configs.get(core_values[0]).unwrap().system.rapl.events %}-e "{{ event }}" {% endfor %}{% endif %} {% if hwpc_alone_configs.get(core_values[0]).unwrap().system.msr.events.len() > 0 %} -s "msr" {%~ for event in hwpc_alone_configs.get(core_values[0]).unwrap().system.msr.events %}-e "{{ event }}" {% endfor %} {% endif %} {% if hwpc_alone_configs.get(core_values[0]).unwrap().system.core.events.len() > 0 %} -c "core" {%~ for event in hwpc_alone_configs.get(core_values[0]).unwrap().system.core.events %}-e "{{ event }}" {% endfor %} {% endif %}
14+
15+
${SUDO_CMD}perf stat -a -o /tmp/frequency_{{ target_frequency }}_perf_and_hwpc_$i {% for perf_event in perf_events.iter() %}-e {{ perf_event }} {% endfor %} sleep 40
16+
TEMPERATURE_STOP=$(get_average_temperature)
17+
docker stop hwpc_{{ target_frequency }}_$i
18+
cat /tmp/frequency_{{ target_frequency }}_perf_and_hwpc_$i >> $PERF_AND_HWPC_FREQUENCY_FILE || true
19+
echo "$TEMPERATURE_START,$TEMPERATURE_STOP,$i" >> $PERF_AND_HWPC_FREQUENCY_TEMPERATURES_FILE
20+
21+
#CODECARBON RUN
22+
TEMPERATURE_START=$(get_average_temperature)
23+
${SUDO_CMD}bash -c "codecarbon monitor {{ target_frequency }} --no-api > /tmp/frequency_{{ target_frequency }}_codecarbon_and_perf_${i} 2>&1 & echo \$!" > /tmp/codecarbon_pid_$i
24+
CODECARBON_PID=$(cat /tmp/codecarbon_pid_$i)
25+
${SUDO_CMD}perf stat -a -o /tmp/frequency_{{ target_frequency }}_perf_and_codecarbon_$i {% for perf_event in perf_events.iter() %}-e {{ perf_event }} {% endfor %} sleep 40
26+
TEMPERATURE_STOP=$(get_average_temperature)
27+
${SUDO_CMD}kill -2 $CODECARBON_PID
28+
sleep 10
29+
cat /tmp/frequency_{{ target_frequency }}_codecarbon_and_perf_${i} | grep 'Energy consumed for All CPU' | awk -F' ' '{print $4 $11}' | awk -F']' '{print $1" "$2}' | awk -v ITER=$i '{printf("%s,%s,%s,%s\n","CPU",$1,$2,ITER)}' >> $CODECARBON_AND_PERF_FREQUENCY_FILE || true
30+
cat /tmp/frequency_{{ target_frequency }}_codecarbon_and_perf_${i} | grep 'Energy consumed for RAM' | awk -F' ' '{print $4 $11}' | awk -F']' '{print $1" "$2}' | awk -v ITER=$i '{printf("%s,%s,%s,%s\n","CPU",$1,$2,ITER)}' >> $CODECARBON_AND_PERF_FREQUENCY_FILE || true
31+
cat /tmp/frequency_{{ target_frequency }}_perf_and_codecarbon_${i} >> $PERF_AND_CODECARBON_FREQUENCY_FILE || true
32+
echo "$TEMPERATURE_START,$TEMPERATURE_STOP,$i" >> $PERF_AND_CODECARBON_FREQUENCY_TEMPERATURES_FILE
33+
34+
35+
36+
#ALUMET
37+
TEMPERATURE_START=$(get_average_temperature)
38+
sed -i "s/poll_interval = [0-9]*m?s/frequency = {{ target_frequency }}ms/" /home/nleblond/alumet-config.toml
39+
${SUDO_CMD}bash -c "alumet --plugins 'csv,rapl' --output '/tmp/frequency_{{ target_frequency }}_alumet_and_perf_${i}.csv' & echo \$!" > /tmp/alumet_pid_$i
40+
ALUMET_PID=$(cat /tmp/alumet_pid_$i)
41+
${SUDO_CMD}perf stat -a -o /tmp/frequency_{{ target_frequency }}_perf_and_alumet_$i {% for perf_event in perf_events.iter() %}-e {{ perf_event }} {% endfor %} sleep 40
42+
TEMPERATURE_STOP=$(get_average_temperature)
43+
${SUDO_CMD}kill -2 $ALUMET_PID
44+
sleep 10
45+
cat /tmp/frequency_{{ target_frequency }}_alumet_and_perf_${i}.csv | grep rapl | awk -v ITER=$i -F';' '{printf("%s,%s,%s,%s\n",$8,$2,$3,ITER)}' >> $ALUMET_AND_PERF_FREQUENCY_FILE || true
46+
cat /tmp/frequency_{{ target_frequency }}_perf_and_alumet_$i >> $PERF_AND_ALUMET_FREQUENCY_FILE || true
47+
echo "$TEMPERATURE_START,$TEMPERATURE_STOP,$i" >> $PERF_AND_ALUMET_FREQUENCY_TEMPERATURES_FILE
48+
49+
#SCAPHANDRE RUN
50+
TEMPERATURE_START=$(get_average_temperature)
51+
${SUDO_CMD}bash -c "scaphandre json -s 0 --step-nano {{ target_frequency * 1000000 }} -f /tmp/frequency_{{ target_frequency }}_scaphandre_and_perf_$i & echo \$!" > /tmp/scaphandre_pid_$i
52+
SCAPHANDRE_PID=$(cat /tmp/scaphandre_pid_$i)
53+
${SUDO_CMD}perf stat -a -o /tmp/frequency_{{ target_frequency }}_perf_and_scaphandre_$i {% for perf_event in perf_events.iter() %}-e {{ perf_event }} {% endfor %} sleep 40
54+
TEMPERATURE_STOP=$(get_average_temperature)
55+
${SUDO_CMD}kill -2 $SCAPHANDRE_PID
56+
sleep 10
57+
yq '.[].host | "package" + "," + .timestamp + "," + .consumption + "," + env(i)' /tmp/frequency_{{ target_frequency }}_scaphandre_and_perf_$i >> $SCAPHANDRE_AND_PERF_FREQUENCY_FILE || true
58+
cat /tmp/frequency_{{ target_frequency }}_perf_and_scaphandre_$i >> $PERF_AND_SCAPHANDRE_FREQUENCY_FILE
59+
echo "$TEMPERATURE_START,$TEMPERATURE_STOP,$i" >> $PERF_AND_SCAPHANDRE_FREQUENCY_TEMPERATURES_FILE
60+
61+
62+
#VJOULE RUN
63+
TEMPERATURE_START=$(get_average_temperature)
64+
sed -i "s/freq = [0-9]*/freq = {{ 1000 / target_frequency }}/" /etc/vjoule/config.toml
65+
${SUDO_CMD}systemctl restart vjoule_service.service
66+
sleep 10
67+
${SUDO_CMD}bash -c "vjoule top --output /tmp/frequency_{{ target_frequency }}_vjoule_and_perf_$i 1>/dev/null & echo \$!" > /tmp/vjoule_pid_$i
68+
VJOULE_PID=$(cat /tmp/vjoule_pid_$i)
69+
${SUDO_CMD}perf stat -a -o /tmp/frequency_{{ target_frequency }}_perf_and_vjoule_$i {% for perf_event in perf_events.iter() %}-e {{ perf_event }} {% endfor %} sleep 40
70+
${SUDO_CMD}kill -2 $VJOULE_PID
71+
sleep 10
72+
TEMPERATURE_STOP=$(get_average_temperature)
73+
cat /tmp/frequency_{{ target_frequency }}_vjoule_and_perf_$i | tail -n +2 | awk -v ITER=$i -F';' '{printf("%s,%s,%s,%s\n","CPU",$1,$3,ITER)}' >> $VJOULE_AND_PERF_FREQUENCY_FILE || true
74+
cat /tmp/frequency_{{ target_frequency }}_vjoule_and_perf_$i | tail -n +2 | awk -v ITER=$i -F';' '{printf("%s,%s,%s,%s\n","RAM",$1,$4,ITER)}' >> $VJOULE_AND_PERF_FREQUENCY_FILE || true
75+
cat /tmp/frequency_{{ target_frequency }}_perf_and_vjoule_$i >> $PERF_AND_VJOULE_FREQUENCY_FILE || true
76+
echo "$TEMPERATURE_START,$TEMPERATURE_STOP,$i" >> $PERF_AND_VJOULE_FREQUENCY_TEMPERATURES_FILE

0 commit comments

Comments
 (0)