|
| 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