Skip to content

Commit 2bb724f

Browse files
author
Inkedstinct
committed
feat(scripts): Add for loop over different values for OPS_PER_CORE in order to test variability over program duration
1 parent 017a4e2 commit 2bb724f

File tree

5 files changed

+30
-21
lines changed

5 files changed

+30
-21
lines changed

src/scripts.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use thiserror::Error;
1414

1515
const WALLTIME: &str = "4:00:00";
1616
const QUEUE_TYPE: &str = "default";
17-
const CPU_OPS_PER_CORE: u32 = 25_000;
17+
const CPU_OPS_PER_CORE_LIST: &[u32] = &[25, 250, 2_500, 25_000];
1818
const NB_ITERATIONS: usize = 10;
1919
const HWPC_HOME_DIRECTORY: &str = "/app";
2020

@@ -37,7 +37,7 @@ struct BenchmarkTemplate {
3737
results_directory: String,
3838
core_values: Vec<u32>,
3939
perf_events: PerfEvents,
40-
cpu_ops_per_core: u32,
40+
cpu_ops_per_core_list: Vec<u32>,
4141
}
4242

4343
impl BenchmarkTemplate {
@@ -58,7 +58,7 @@ impl BenchmarkTemplate {
5858
results_directory: String,
5959
core_values: Vec<u32>,
6060
perf_events: PerfEvents,
61-
cpu_ops_per_core: Option<u32>,
61+
cpu_ops_per_core_list: &[u32],
6262
) -> Self {
6363
Self {
6464
nb_iterations,
@@ -77,7 +77,7 @@ impl BenchmarkTemplate {
7777
results_directory,
7878
core_values,
7979
perf_events,
80-
cpu_ops_per_core: cpu_ops_per_core.unwrap_or_default(),
80+
cpu_ops_per_core_list: cpu_ops_per_core_list.into(),
8181
}
8282
}
8383
}
@@ -125,7 +125,7 @@ pub fn generate_script_file(
125125
job.results_dir.clone(),
126126
job.core_values.clone(),
127127
perf_events,
128-
Some(CPU_OPS_PER_CORE),
128+
CPU_OPS_PER_CORE_LIST,
129129
);
130130
let benchmark = benchmark.render().unwrap();
131131
file.write_all(benchmark.as_bytes())?;

templates/benchmark.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ set -ueo pipefail
44

55
{% include "oar_directives.sh" %}
66

7+
SECONDS=0
78
########################
89
### INSTALL PACKAGES ###
910
########################
@@ -43,4 +44,6 @@ set -ueo pipefail
4344
############
4445
### EXIT ###
4546
############
47+
duration=$SECONDS
48+
echo "$(($diff / 3600)) hours, $((duration / 60)) minutes and $((duration % 60)) seconds elapsed."
4649
{% include "exit.sh" %}

templates/hwpc_alone.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
{% for core_value in core_values %}
2-
mkdir -p {{ results_directory }}/hwpc_alone_{{ core_value }}
2+
{% for cpu_ops_per_core in cpu_ops_per_core_list %}
3+
mkdir -p {{ results_directory }}/hwpc_alone_{{ core_value }}_{{ cpu_ops_per_core }}
34
for i in {1..{{ nb_iterations }}}; do
45
### HWPC sensor dedicated to stress-ng with {{ core_value }} CPU * {{ cpu_ops_per_core }} OPS
5-
docker run --rm -d --net=host --privileged --pid=host --name {{ hwpc_alone_configs.get(core_value).unwrap().name }}_$i \
6+
docker run --rm -d --net=host --privileged --pid=host --name {{ hwpc_alone_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i \
67
-v /sys:/sys \
78
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
89
-v /tmp/power-api-sensor-reporting:/reporting \
910
-v $(pwd):{{ hwpc_home_directory }} \
1011
powerapi/hwpc-sensor:1.4.0 \
11-
-n {{ hwpc_alone_configs.get(core_value).unwrap().name }}_$i \
12+
-n {{ hwpc_alone_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i \
1213
-p {{ hwpc_alone_configs.get(core_value).unwrap().cgroup_basepath }} \
13-
-r {{ hwpc_alone_configs.get(core_value).unwrap().output.type }} -U {{ hwpc_home_directory}}/{{ results_directory }}/hwpc_alone_{{ core_value }}/hwpc_alone_{{ core_value }}_$i \
14+
-r {{ hwpc_alone_configs.get(core_value).unwrap().output.type }} -U {{ hwpc_home_directory}}/{{ results_directory }}/hwpc_alone_{{ core_value }}_{{ cpu_ops_per_core }}/hwpc_alone_{{ core_value }}_{{ cpu_ops_per_core }}_$i \
1415
{% if hwpc_alone_configs.get(core_value).unwrap().system.rapl.events.len() > 0 %} -s "rapl" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.rapl.events %}-e "{{ event }}" {% endfor %} {% endif %} {% if hwpc_alone_configs.get(core_value).unwrap().system.msr.events.len() > 0 %} -s "msr" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.msr.events %}-e "{{ event }}" {% endfor %} {% endif %} {% if hwpc_alone_configs.get(core_value).unwrap().system.core.events.len() > 0 %} -c "core" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.core.events %}-e "{{ event }}" {% endfor %} {% endif %}
1516
stress-ng --cpu {{ core_value }} --cpu-ops {{ core_value * cpu_ops_per_core }} -q
16-
docker rm -f {{ hwpc_alone_configs.get(core_value).unwrap().name }}_$i
17+
docker rm -f {{ hwpc_alone_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i
1718
sleep 15
1819
done
1920

21+
{% endfor %}
2022
{% endfor %}

templates/hwpc_and_perf.sh

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
{% for core_value in core_values %}
2-
touch {{ results_directory }}/perf_and_hwpc_{{ core_value }}
3-
mkdir -p {{ results_directory }}/hwpc_and_perf_{{ core_value }}
2+
{% for cpu_ops_per_core in cpu_ops_per_core_list %}
3+
touch {{ results_directory }}/perf_and_hwpc_{{ core_value }}_{{ cpu_ops_per_core }}
4+
mkdir -p {{ results_directory }}/hwpc_and_perf_{{ core_value }}_{{ cpu_ops_per_core }}
45
for i in {1..{{ nb_iterations }}}; do
56
### HWPC sensor dedicated to stress-ng with {{ core_value }} CPU * {{ cpu_ops_per_core }} OPS
6-
docker run --rm -d --net=host --privileged --pid=host --name {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_$i \
7+
docker run --rm -d --net=host --privileged --pid=host --name {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i \
78
-v /sys:/sys \
89
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
910
-v /tmp/power-api-sensor-reporting:/reporting \
1011
-v $(pwd):{{ hwpc_home_directory }} \
1112
powerapi/hwpc-sensor:1.4.0 \
12-
-n {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_$i \
13+
-n {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i \
1314
-p {{ hwpc_and_perf_configs.get(core_value).unwrap().cgroup_basepath }} \
14-
-r {{ hwpc_and_perf_configs.get(core_value).unwrap().output.type }} -U {{ hwpc_home_directory }}/{{ results_directory }}/hwpc_and_perf_{{ core_value }}/hwpc_and_perf_{{ core_value }}_$i \
15+
-r {{ hwpc_and_perf_configs.get(core_value).unwrap().output.type }} -U {{ hwpc_home_directory }}/{{ results_directory }}/hwpc_and_perf_{{ core_value }}/hwpc_and_perf_{{ core_value }}_{{ cpu_ops_per_core }}_$i \
1516
{% if hwpc_alone_configs.get(core_value).unwrap().system.rapl.events.len() > 0 %} -s "rapl" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.rapl.events %}-e "{{ event }}" {% endfor %}{% endif %} {% if hwpc_alone_configs.get(core_value).unwrap().system.msr.events.len() > 0 %} -s "msr" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.msr.events %}-e "{{ event }}" {% endfor %} {% endif %} {% if hwpc_alone_configs.get(core_value).unwrap().system.core.events.len() > 0 %} -c "core" {%~ for event in hwpc_alone_configs.get(core_value).unwrap().system.core.events %}-e "{{ event }}" {% endfor %} {% endif %}
1617

1718
### PERF with {{ core_value }} CPU * {{ cpu_ops_per_core }} OPS
18-
sudo perf stat -a -o /tmp/perf_and_hwpc_{{ core_value }}_$i {% for perf_event in perf_events.iter() %}-e "{{ perf_event }}" {% endfor %} stress-ng --cpu {{ core_value }} --cpu-ops {{ core_value * cpu_ops_per_core }} -q
19-
cat /tmp/perf_and_hwpc_{{ core_value }}_$i >> {{ results_directory }}/perf_and_hwpc_{{ core_value }}
20-
docker rm -f {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_$i
19+
sudo perf stat -a -o /tmp/perf_and_hwpc_{{ core_value }}_{{ cpu_ops_per_core }}_$i {% for perf_event in perf_events.iter() %}-e "{{ perf_event }}" {% endfor %} stress-ng --cpu {{ core_value }} --cpu-ops {{ core_value * cpu_ops_per_core }} -q
20+
cat /tmp/perf_and_hwpc_{{ core_value }}_{{ cpu_ops_per_core }}_$i >> {{ results_directory }}/perf_and_hwpc_{{ core_value }}_{{ cpu_ops_per_core }}
21+
docker rm -f {{ hwpc_and_perf_configs.get(core_value).unwrap().name }}_{{ cpu_ops_per_core }}_$i
2122
sleep 15
2223
done
2324

25+
{% endfor %}
2426
{% endfor %}

templates/perf_alone.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
{% for core_value in core_values %}
2-
touch {{ results_directory }}/perf_alone_{{ core_value }}
2+
{% for cpu_ops_per_core in cpu_ops_per_core_list %}
3+
touch {{ results_directory }}/perf_alone_{{ core_value }}_{{ cpu_ops_per_core }}
34
for i in {1..{{ nb_iterations }}}; do
45
### PERF with {{ core_value }} CPU * {{ cpu_ops_per_core }} OPS
5-
sudo perf stat -a -o /tmp/perf_alone_{{ core_value }}_$i {% for perf_event in perf_events.iter() %}-e "{{ perf_event }}" {% endfor %} stress-ng --cpu {{ core_value }} --cpu-ops {{ core_value * cpu_ops_per_core }} -q
6-
cat /tmp/perf_alone_{{ core_value }}_$i >> {{ results_directory }}/perf_alone_{{ core_value }}
6+
sudo perf stat -a -o /tmp/perf_alone_{{ core_value }}_{{ cpu_ops_per_core }}_$i {% for perf_event in perf_events.iter() %}-e "{{ perf_event }}" {% endfor %} stress-ng --cpu {{ core_value }} --cpu-ops {{ core_value * cpu_ops_per_core }} -q
7+
cat /tmp/perf_alone_{{ core_value }}_{{ cpu_ops_per_core }}_$i >> {{ results_directory }}/perf_alone_{{ core_value }}_{{ cpu_ops_per_core }}
78
done
9+
{% endfor %}
810
{% endfor %}
911

0 commit comments

Comments
 (0)