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
i4
manycore
emper-io-eval
Commits
ffe497f0
Commit
ffe497f0
authored
May 16, 2022
by
Florian Fischer
Browse files
make evaluation modes selectable
parent
8271e71f
Pipeline
#82027
passed with stage
in 1 minute and 25 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
eval-muhq-ma.sh
View file @
ffe497f0
...
...
@@ -22,8 +22,6 @@ if [ -d "$OUT" ]; then
mv
"
$OUT
"
"
$OUT
"
-
"
$ctime
"
fi
mkdir
-p
"
${
OUT
}
"
/
{
latency,throughput
}
NUMA_ARGS
=
--measure-cmd
=
"numactl --cpunodebind=netdev:10gbe-card-p1 /usr/bin/time -o {BENCHDIR}/server_stats.{RUN}.txt -v"
COMMON_ARGS
=(
--ssh-port
"
${
SSH_PORT
}
"
--host
"
${
HOST
}
"
--perf-energy
)
...
...
@@ -40,43 +38,47 @@ COMMON_ARGS_LATENCY=(${COMMON_ARGS[@]} --data-dir ${OUT}/latency \
echo
"muhq's MA io eval"
echo
'Writing results to'
"
$OUT
"
echo
'arguments:'
"
${
COMMON_ARGS
[@]
}
"
echo
'throughput-arguments:'
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
echo
'latency-arguments:'
"
${
COMMON_ARGS_LATENCY
[@]
}
"
# Baseline measurements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
vanilla vanilla-200us
--
emper
## Baseline measurements
eval_throughput
()
{
echo
"Measuring throughput"
echo
'throughput-arguments:'
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
mkdir
-p
"
${
OUT
}
"
/throughput
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
vanilla vanilla-200us
--
emper
# No sleep measurements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
no-sleep no-sleep-0us-1ms
--
emper
# No sleep measurements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
no-sleep no-sleep-0us-1ms
--
emper
# Measure parsimonious sem
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
parsimonious-sem
--
emper
# Measure parsimonious sem
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
parsimonious-sem
--
emper
# Measure registering io_uring fd's improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
not-register-iouring
--
emper
# Measure registering io_uring fd's improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
not-register-iouring
--
emper
# Measurements comparing runtimes
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
--
go go-200us tokio tokio-200us
# Measurements comparing runtimes
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
--
go go-200us tokio tokio-200us
# Measurements showing distributed design improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
simple-arch simple-arch-try-syscall
--
emper
# Measurements showing distributed design improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
simple-arch simple-arch-try-syscall
--
emper
# Measurements showing linked future improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
linked-futures
--
emper
# Measurements showing linked future improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
linked-futures
--
emper
# Measurements showing sleep strategies
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
pipe waitfd
--
emper
# Measurements showing sleep strategies
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
pipe waitfd
--
emper
# Measurements showing completer, stealing, notification benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
# Measurements showing completer, stealing, notification benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
io-stealing
\
pipe-no-comp io-stealing-pipe-no-comp
\
waitfd-no-comp io-stealing-waitfd-no-comp
\
io-notification-waitfd-no-comp
\
--
emper
# Measurements showing completer, stealing notification benefits with computation
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
# Measurements showing completer, stealing notification benefits with computation
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
vanilla-0us-1ms io-stealing-0us-1ms
\
pipe-0us-1ms pipe-no-comp-0us-1ms
\
io-stealing-pipe-no-comp-0us-1ms
\
...
...
@@ -85,15 +87,15 @@ echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}"
io-notification-waitfd-no-comp-0us-1ms
\
--
emper
# Measurements waitfree notification variants benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
# Measurements waitfree notification variants benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
io-notification-waitfree io-notification-waitfree-no-comp
\
io-notification-waitfree-0us-1ms io-notification-waitfree-no-comp-0us-1ms
\
--
emper
# Measure lockless stealing variants seperatly because they are not reliable
# and thus easier to skip
#./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
# Measure lockless stealing variants seperatly because they are not reliable
# and thus easier to skip
#./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
#io-stealing-lockless \
#io-stealing-pipe-no-comp-lockless \
#io-stealing-waitfd-no-comp-lockless \
...
...
@@ -104,13 +106,24 @@ echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}"
#io-notification-waitfree-no-comp-lockless \
#io-notification-waitfree-no-comp-lockless-0us-1ms \
#-- emper
}
# Latency evaluation
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
vanilla-200us vanilla-0us-1ms no-sleep-0us-1ms
\
eval_latency
()
{
## Latency evaluation
echo
"Measuring latency"
echo
'latency-arguments:'
"
${
COMMON_ARGS_LATENCY
[@]
}
"
mkdir
-p
"
${
OUT
}
"
/latency
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
{
no-sleep,vanilla
}
-
{
200us,0us-1ms
}
\
--
emper go-200us tokio-200us
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
\
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
\
{
pipe,waitfd
}{
,-no-comp
}
-
{
200us,0us-1ms
}
\
io-stealing-
{
pipe,waitfd
}
-no-comp-
{
200us,0us-1ms
}
\
io-notification-
{
,waitfree-
}
waitfd-no-comp-
{
200us,0us-1ms
}
\
--
emper
}
[[
"
${
EVAL_THROUGHPUT
:
=true
}
"
!=
"false"
]]
&&
eval_throughput
[[
"
${
EVAL_LATENCY
:
=true
}
"
!=
"false"
]]
&&
eval_latency
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