Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Christopher Ferreira
erods-bench
Commits
d19eaff8
Commit
d19eaff8
authored
May 16, 2017
by
aumgn
Browse files
Update org files
parent
938a6003
Changes
3
Hide whitespace changes
Inline
Side-by-side
exp/mini-volrend/mini-volrend.org
View file @
d19eaff8
...
...
@@ -62,17 +62,14 @@ HD
echo -n '' > $DATAFILE
sudo cat /etc/os-release >> $LOGDIR/system
sudo sysctl -a >> $LOGDIR/system 2>/dev/null
old_autogroup=$(sudo sysctl -n kernel.sched_autogroup_enabled)
old_migration_cost=$(sudo sysctl -n kernel.sched_migration_cost_ns)
echo "old_autogroup=$old_autogroup" >> $LOGDIR/old-system
echo "old_migration_cost=$old_migration_cost" >> $LOGDIR/old-system
sudo sysctl -q kernel.sched_migration_cost_ns=500000
sudo sysctl -q kernel.sched_autogroup_enabled=0
sudo cat /etc/os-release > $LOGDIR/system
sudo sysctl -a >> $LOGDIR/system 2>/dev/null
make -C$SRCDIR >$LOGDIR/make 2>&1
repeat=$5
...
...
exp/volrend/volrend.org
View file @
d19eaff8
...
...
@@ -17,18 +17,17 @@ This script will run the application with multiple parameters and produce a csv
#+BEGIN_SRC sh
usage() {
cat <<HD
Usage: $0 <pinning> <nodes>
<size>
<autogroup> <
migrations
> <repeat>
Usage: $0 <pinning> <nodes> <autogroup> <
size
> <repeat>
<pinning> list of values among { cores, nodes, subset, none }
<nodes> list of numbers of nodes
<size> list of sizes (parameter of the application)
<autogroup> whether ('y') or not ('n') autogroup should be enabled
<
migrations> whether ('y') or not ('n') migrations should be enabled (using kernel.sched_migrations_cost_ns
)
<
size> list of sizes (parameter of the application
)
<repeat> the number of time to run the application for each parameter combinations
Run on 64 cores with and without pinning one time each:
>> $0 "cores none" 8 400 n
n
1
>> $0 "cores none" 8 400 n 1
Run on 1,2,3,4,5,6,7,8 nodes with pinning and without pinning but only the necessary number of cores five times each:
>> $0 "cores subset" "\$(seq 1 8)" "200 1000" n
n
5
>> $0 "cores subset" "\$(seq 1 8)" "200 1000" n 5
HD
}
#+END_SRC
...
...
@@ -97,10 +96,9 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
run() {
pinning=$1
nodes=$2
size=$3
autogroup=$4
migrations=$5
repeat=$6
autogroup=$3
size=$4
repeat=$5
threads=$(($nodes * 8))
arg_suffix=''
...
...
@@ -129,23 +127,16 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
exit 35
fi
# if [[ $migrations == "y" ]]; then
# sudo sysctl -q kernel.sched_migration_cost_ns=500000
# elif [[ $migrations == "n" ]]; then
# sudo sysctl -q kernel.sched_migration_cost_ns=-1
# else
# echo 'Unknown migrations $migrations'
# exit 35
# fi
logfile_name=$nodes.$pinning.$size.$autogroup.$migrations
logfile_name=$nodes.$pinning.$size.$autogroup
time_file=$APP_LOG_DIR/$logfile_name.time
outfile=$APP_LOG_DIR/$logfile_name.out
errfile=$APP_LOG_DIR/$logfile_name.err
perf_script_file=$APP_LOG_DIR/$logfile_name.script.perf
schedstat1_file=$APP_LOG_DIR/$logfile_name.schedstat1
schedstat2_file=$APP_LOG_DIR/$logfile_name.schedstat2
printf '[%6s][%2d][%4d][%s]
[%s]
' $pinning $nodes $size $autogroup
$migrations
printf '####### [%6s][%2d][%4d][%s]
[%s]
#######\n' $pinning $nodes $size $autogroup
$migrations
|
printf '[%6s][%2d][%4d][%s] ' $pinning $nodes $size $autogroup
printf '####### [%6s][%2d][%4d][%s] #######\n' $pinning $nodes $size $autogroup |
tee -a $outfile $errfile >/dev/null
time_prefix="/usr/bin/time -f%e -o $time_file -a"
...
...
@@ -166,9 +157,12 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
cmd="$perf_prefix $time_prefix $pin_prefix $APP_BIN $threads $APP_INPUTS_DIR/head $size $arg_suffix"
echo "$cmd" | tee -a $outfile $errfile >/dev/null
cat /proc/schedstat > $schedstat1_file
eval "$cmd" 1>>$outfile 2>>$errfile
cat /proc/schedstat > $schedstat2_file
printf '.'
printf '%s,%d,%d,%s,%s,%f\n' $pinning $nodes $size $autogroup
$migrations
$(tail -1 $time_file) >>$DATAFILE
printf '%s,%d,%d,%s,%s,%f\n' $pinning $nodes $size $autogroup $(tail -1 $time_file) >>$DATAFILE
if [[ -n $WITH_PERF ]]; then
sudo perf script -i $perf_raw_file >> $perf_script_file
...
...
@@ -184,30 +178,27 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
}
sudo cat /etc/os-release >> $APP_LOG_DIR/system
sudo sysctl -a >> $APP_LOG_DIR/system 2>/dev/null
old_autogroup=$(sudo sysctl -n kernel.sched_autogroup_enabled)
old_migration_cost=$(sudo sysctl -n kernel.sched_migration_cost_ns)
echo "old_autogroup=$old_autogroup" >> $APP_LOG_DIR/system
echo "old_migration_cost=$old_migration_cost" >> $APP_LOG_DIR/system
if [[ $# !=
6
]]; then
if [[ $# !=
5
]]; then
usage $0
exit 1
fi
repeat=$
6
repeat=$
5
for pinning in $1; do
for nodes in $2; do
for size in $3; do
for autogroup in $4; do
for migrations in $5; do
run $pinning $nodes $size $autogroup $migrations $repeat
done
for autogroup in $3; do
for size in $4; do
run $pinning $nodes $autogroup $size $repeat
done
done
done
done
sudo sysctl -q kernel.sched_migration_cost_ns=$old_migration_cost
sudo sysctl -q kernel.sched_autogroup_enabled=$old_autogroup
echo ''
...
...
@@ -259,58 +250,41 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
** Load data
#+BEGIN_SRC R
data <- read.csv('./
data/
volrend.data', header = FALSE)
names(data) <- c('Pinning', 'Nodes', 'Size', 'Autogroup', 'Time')
data <- read.csv('./volrend.data', header = FALSE)
names(data) <- c(
'cpubars',
'Pinning', 'Nodes', 'Size', 'Autogroup', 'Time')
summary(data)
#+END_SRC
#+RESULTS:
| Pinning
| Nodes | Size | Autogroup | Time |
|------------+-----------+-------------+-----------+---------------|
| cores
:28
0 | Min. :
2
| Min. :500 | n:
560
| Min. :1
8.82
|
|
nodes :28
0 | 1st Qu.:
3
| 1st Qu.:500 |
y:560
| 1st Qu.:
2
1.
31
|
| n
one :280
| Median :
5
| Median :500 | nil | Median :
24.14
|
|
subset:280
| Mean :
5
| Mean :500 | nil | Mean :
29.8
0 |
| nil | 3rd Qu.:
7
| 3rd Qu.:500 | nil | 3rd Qu.:
31.43
|
| nil | Max. :8 | Max. :500 | nil | Max. :
79.0
0 |
| cpubars
| Pinning | Nodes | Size | Autogroup | Time |
NA |
|------------+----------
+----------
-+-------------+-----------+---------------
+-----------
|
| with :40
| cores
:4
0 | Min. :
8
| Min. :500 | n:
80
| Min. :1
1.58 | Min. :0
|
|
without:40 | none :4
0 | 1st Qu.:
8
| 1st Qu.:500 |
nil
| 1st Qu.:
1
1.
67 | 1st Qu.:0
|
| n
il | nil
| Median :
8
| Median :500 | nil | Median :
12.10 | Median :0
|
|
nil | nil
| Mean :
8
| Mean :500 | nil | Mean :
12.81 | Mean :
0 |
| nil |
nil |
3rd Qu.:
8
| 3rd Qu.:500 | nil | 3rd Qu.:
13.81 | 3rd Qu.:0
|
| nil |
nil |
Max. :8 | Max. :500 | nil | Max. :
17.02 | Max. :
0 |
** Process Data
#+BEGIN_SRC R
processed <- data %>%
select(Pinning, Nodes, Size, Autogroup, Time) %>%
filter(Pinning != '
subset
', Autogroup == 'n') %>%
group_by(Pinning, Nodes, Size, Autogroup) %>%
select(
cpubars,
Pinning, Nodes, Size, Autogroup, Time) %>%
filter(Pinning != '
nodes
', Autogroup == 'n') %>%
group_by(
cpubars,
Pinning, Nodes, Size, Autogroup) %>%
summarise(
ThroughputMean = mean(
Size /
Time),
ThroughputSd = sd(
Size /
Time)
ThroughputMean = mean(Time),
ThroughputSd = sd(Time)
)
#+END_SRC
#+RESULTS:
| Pinning | Nodes | Size | Autogroup | ThroughputMean | ThroughputSd |
|---------+-------+------+-----------+------------------+--------------------|
| cores | 2 | 500 | n | 18.3459675157152 | 0.0265977612489882 |
| nodes | 2 | 500 | n | 18.1585068732057 | 0.049720181056774 |
| none | 2 | 500 | n | 18.4652398202751 | 0.0888830366260403 |
| cores | 3 | 500 | n | 22.9811939652092 | 0.0451723600590333 |
| nodes | 3 | 500 | n | 22.4666378521908 | 0.0815860197642701 |
| none | 3 | 500 | n | 22.6483415040959 | 0.0895873114278645 |
| cores | 4 | 500 | n | 25.505782310052 | 0.0596879123454934 |
| nodes | 4 | 500 | n | 24.6156575217621 | 0.150903843592492 |
| none | 4 | 500 | n | 24.3010200256919 | 0.148403243574827 |
| cores | 5 | 500 | n | 26.490176601519 | 0.0554675048309106 |
| nodes | 5 | 500 | n | 25.3086672531992 | 0.177010178787096 |
| none | 5 | 500 | n | 24.9689072440379 | 0.227964099920539 |
| cores | 6 | 500 | n | 25.4592655698564 | 0.0993940994110306 |
| nodes | 6 | 500 | n | 23.7509799506764 | 0.277133274783218 |
| none | 6 | 500 | n | 22.873093079685 | 0.285458099421298 |
| cores | 7 | 500 | n | 24.1039864586029 | 0.126479709689667 |
| nodes | 7 | 500 | n | 21.7328544913934 | 0.268300435798418 |
| none | 7 | 500 | n | 20.7124950044962 | 0.372529986808999 |
| cores | 8 | 500 | n | 22.3904598083879 | 0.191887731743282 |
| nodes | 8 | 500 | n | 19.1094435464418 | 0.460579640975177 |
| none | 8 | 500 | n | 14.6322760727828 | 0.554425827611595 |
| cpubars | Pinning | Nodes | Size | Autogroup | ThroughputMean | ThroughputSd |
|---------+---------+-------+------+-----------+----------------+--------------------|
| with | cores | 8 | 500 | n | 11.676 | 0.0301574813970021 |
| with | none | 8 | 500 | n | 14.9565 | 0.975825022062977 |
| without | cores | 8 | 500 | n | 11.6485 | 0.0464842927630852 |
| without | none | 8 | 500 | n | 12.9545 | 0.37514172760368 |
** Plot
...
...
@@ -331,9 +305,9 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
ymax = ThroughputMean + ThroughputSd,
colour = Pinning
)) +
facet_grid(. ~
Autogroup
, labeller = labeller(
Autogroup
= c(
y
= "With
autogroup
",
n
= "Without
autogroup
"
facet_grid(. ~
cpubars
, labeller = labeller(
cpubars
= c(
with
= "With
cpubars
",
without
= "Without
cpubars
"
))) +
flat_theme$theme +
theme(legend.position = "bottom") +
...
...
@@ -342,7 +316,7 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
#+END_SRC
#+RESULTS:
[[file:
output/
volrend.png]]
[[file:volrend.png]]
* Flame graph
...
...
exp/wordcount/wordcount.org
View file @
d19eaff8
...
...
@@ -17,17 +17,16 @@ This script will run the application with multiple parameters and produce a csv
#+BEGIN_SRC sh
usage() {
cat <<HD
Usage: $0 <pinning> <nodes> <autogroup>
<migrations>
<repeat>
Usage: $0 <pinning> <nodes> <autogroup> <repeat>
<pinning> list of values among { cores, nodes, subset, none }
<nodes> list of numbers of nodes
<autogroup> whether ('y') or not ('n') autogroup should be enabled
<migrations> whether ('y') or not ('n') migrations should be enabled (using kernel.sched_migrations_cost_ns)
<repeat> the number of time to run the application for each parameter combinations
Run on 64 cores with and without pinning one time each:
>> $0 "cores none" 8 n
n
1
>> $0 "cores none" 8 n 1
Run on 1,2,3,4,5,6,7,8 nodes with pinning and without pinning but only the necessary number of cores five times each:
>> $0 "cores subset" "\$(seq 1 8)" n
n
5
>> $0 "cores subset" "\$(seq 1 8)" n 5
HD
}
#+END_SRC
...
...
@@ -130,39 +129,33 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
exit 35
fi
if [[ $migrations == "y" ]]; then
sudo sysctl -q kernel.sched_migration_cost_ns=500000
elif [[ $migrations == "n" ]]; then
sudo sysctl -q kernel.sched_migration_cost_ns=-1
else
echo 'Unknown migrations $migrations'
exit 35
fi
logfile_name=$nodes.$pinning.$autogroup.$migrations
logfile_name=$nodes.$pinning.$autogroup
time_file=$APP_LOG_DIR/$logfile_name.time
outfile=$APP_LOG_DIR/$logfile_name.out
errfile=$APP_LOG_DIR/$logfile_name.err
perf_script_file=$APP_LOG_DIR/$logfile_name.script.perf
printf '[%6s][%2d][%s][%s] ' $pinning $nodes $autogroup
$migrations
printf '####### [%6s][%2d][%s][%s] #######\n' $pinning $nodes $autogroup
$migrations
|
printf '[%6s][%2d][%s][%s] ' $pinning $nodes $autogroup
printf '####### [%6s][%2d][%s][%s] #######\n' $pinning $nodes $autogroup |
tee -a $outfile $errfile >/dev/null
time_prefix="/usr/bin/time -f%e -o $time_file -a"
perf_base_prefix="sudo perf record -e sched:sched_migrate_task,sched:sched_switch --call-graph dwarf -F 99"
for i in $(seq 1 $repeat); do
perf_prefix=""
if [[ -
z
$WITH
OUT
_PERF ]]; then
if [[ -
n
$WITH_PERF ]]; then
perf_raw_file="$APP_LOG_DIR/$logfile_name.$i.raw.perf"
perf_prefix="$perf_base_prefix -o $perf_raw_file"
fi
cmd="MR_NUMPROCS=$threads MAPRED_NO_BINDING=1 $perf_prefix $time_prefix $pin_prefix $APP_BIN $APP_INPUTS_ARG $size"
echo "$cmd" | tee -a $outfile $errfile >/dev/null
eval "$cmd" 1>>$outfile 2>>$errfile
printf '.'
printf '%s,%d,%s,%s,%f\n' $pinning $nodes $autogroup $migrations $(tail -1 $time_file) >>$DATAFILE
if [[ -z $WITHOUT_PERF ]]; then
printf '%s,%d,%s,%s,%f\n' $pinning $nodes $autogroup $(tail -1 $time_file) >>$DATAFILE
if [[ -n $WITH_PERF ]]; then
sudo perf script -i $perf_raw_file >> $perf_script_file
sudo rm $perf_raw_file
fi
...
...
@@ -171,32 +164,28 @@ pour que les mesures de performances ne soit pas faussée par les accés disques
avg=$(awk '{ sum += $1 } END { if (NR > 0) print sum / NR; else print NaN }' $time_file)
printf ' | Avg: %6.2f\n' $avg
printf '####### [%6s][%2d][%s][%s] %6.2f #######\n' $pinning $nodes $autogroup
$migrations
$avg |
printf '####### [%6s][%2d][%s][%s] %6.2f #######\n' $pinning $nodes $autogroup $avg |
tee -a $outfile $errfile >/dev/null
}
sudo cat /etc/os-release >> $APP_LOG_DIR/system
sudo sysctl -a >> $APP_LOG_DIR/system 2>/dev/null
old_autogroup=$(sudo sysctl -n kernel.sched_autogroup_enabled)
old_migration_cost=$(sudo sysctl -n kernel.sched_migration_cost_ns)
echo $old_autogroup > $APP_LOG_DIR/system
echo $old_migration_cost > $APP_LOG_DIR/system
if [[ $# !=
5
]]; then
if [[ $# !=
4
]]; then
usage $0
exit 1
fi
repeat=$
5
repeat=$
4
for pinning in $1; do
for nodes in $2; do
for autogroup in $3; do
for migrations in $4; do
run $pinning $nodes $autogroup $migrations $repeat
done
run $pinning $nodes $autogroup $repeat
done
done
done
sudo sysctl -q kernel.sched_migration_cost_ns=$old_migration_cost
sudo sysctl -q kernel.sched_autogroup_enabled=$old_autogroup
echo ''
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment