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
Hide whitespace changes
Inline
Side-by-side
eval-muhq-ma.sh
View file @
ffe497f0
...
@@ -22,8 +22,6 @@ if [ -d "$OUT" ]; then
...
@@ -22,8 +22,6 @@ if [ -d "$OUT" ]; then
mv
"
$OUT
"
"
$OUT
"
-
"
$ctime
"
mv
"
$OUT
"
"
$OUT
"
-
"
$ctime
"
fi
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"
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
)
COMMON_ARGS
=(
--ssh-port
"
${
SSH_PORT
}
"
--host
"
${
HOST
}
"
--perf-energy
)
...
@@ -40,77 +38,92 @@ COMMON_ARGS_LATENCY=(${COMMON_ARGS[@]} --data-dir ${OUT}/latency \
...
@@ -40,77 +38,92 @@ COMMON_ARGS_LATENCY=(${COMMON_ARGS[@]} --data-dir ${OUT}/latency \
echo
"muhq's MA io eval"
echo
"muhq's MA io eval"
echo
'Writing results to'
"
$OUT
"
echo
'Writing results to'
"
$OUT
"
echo
'arguments:'
"
${
COMMON_ARGS
[@]
}
"
echo
'arguments:'
"
${
COMMON_ARGS
[@]
}
"
echo
'throughput-arguments:'
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
echo
'latency-arguments:'
"
${
COMMON_ARGS_LATENCY
[@]
}
"
## Baseline measurements
eval_throughput
()
{
# Baseline measurements
echo
"Measuring throughput"
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
vanilla vanilla-200us
--
emper
echo
'throughput-arguments:'
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
# No sleep measurements
mkdir
-p
"
${
OUT
}
"
/throughput
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
no-sleep no-sleep-0us-1ms
--
emper
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
vanilla vanilla-200us
--
emper
# Measure parsimonious sem
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
parsimonious-sem
--
emper
# No sleep measurements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
no-sleep no-sleep-0us-1ms
--
emper
# Measure registering io_uring fd's improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
not-register-iouring
--
emper
# Measure parsimonious sem
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
parsimonious-sem
--
emper
# Measurements comparing runtimes
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
--
go go-200us tokio tokio-200us
# Measure registering io_uring fd's improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
not-register-iouring
--
emper
# Measurements showing distributed design improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
simple-arch simple-arch-try-syscall
--
emper
# Measurements comparing runtimes
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
--
go go-200us tokio tokio-200us
# Measurements showing linked future improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
linked-futures
--
emper
# Measurements showing distributed design improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
simple-arch simple-arch-try-syscall
--
emper
# Measurements showing sleep strategies
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
pipe waitfd
--
emper
# Measurements showing linked future improvements
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
linked-futures
--
emper
# Measurements showing completer, stealing, notification benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
# Measurements showing sleep strategies
io-stealing
\
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
pipe waitfd
--
emper
pipe-no-comp io-stealing-pipe-no-comp
\
waitfd-no-comp io-stealing-waitfd-no-comp
\
# Measurements showing completer, stealing, notification benefits
io-notification-waitfd-no-comp
\
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
--
emper
io-stealing
\
pipe-no-comp io-stealing-pipe-no-comp
\
# Measurements showing completer, stealing notification benefits with computation
waitfd-no-comp io-stealing-waitfd-no-comp
\
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
io-notification-waitfd-no-comp
\
vanilla-0us-1ms io-stealing-0us-1ms
\
--
emper
pipe-0us-1ms pipe-no-comp-0us-1ms
\
io-stealing-pipe-no-comp-0us-1ms
\
# Measurements showing completer, stealing notification benefits with computation
waitfd-0us-1ms waitfd-no-comp-0us-1ms
\
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
io-stealing-waitfd-no-comp-0us-1ms
\
vanilla-0us-1ms io-stealing-0us-1ms
\
io-notification-waitfd-no-comp-0us-1ms
\
pipe-0us-1ms pipe-no-comp-0us-1ms
\
--
emper
io-stealing-pipe-no-comp-0us-1ms
\
waitfd-0us-1ms waitfd-no-comp-0us-1ms
\
# Measurements waitfree notification variants benefits
io-stealing-waitfd-no-comp-0us-1ms
\
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
io-notification-waitfd-no-comp-0us-1ms
\
io-notification-waitfree io-notification-waitfree-no-comp
\
--
emper
io-notification-waitfree-0us-1ms io-notification-waitfree-no-comp-0us-1ms
\
--
emper
# Measurements waitfree notification variants benefits
./eval.py
"
${
COMMON_ARGS_THROUGHPUT
[@]
}
"
-f
\
# Measure lockless stealing variants seperatly because they are not reliable
io-notification-waitfree io-notification-waitfree-no-comp
\
# and thus easier to skip
io-notification-waitfree-0us-1ms io-notification-waitfree-no-comp-0us-1ms
\
#./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
--
emper
#io-stealing-lockless \
#io-stealing-pipe-no-comp-lockless \
# Measure lockless stealing variants seperatly because they are not reliable
#io-stealing-waitfd-no-comp-lockless \
# and thus easier to skip
#io-notification-waitfd-no-comp-lockless \
#./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
#io-stealing-pipe-no-comp-lockless-0us-1ms \
#io-stealing-lockless \
#io-stealing-waitfd-no-comp-lockless-0us-1ms \
#io-stealing-pipe-no-comp-lockless \
#io-notification-waitfd-no-comp-lockless-0us-1ms \
#io-stealing-waitfd-no-comp-lockless \
#io-notification-waitfree-no-comp-lockless \
#io-notification-waitfd-no-comp-lockless \
#io-notification-waitfree-no-comp-lockless-0us-1ms \
#io-stealing-pipe-no-comp-lockless-0us-1ms \
#-- emper
#io-stealing-waitfd-no-comp-lockless-0us-1ms \
#io-notification-waitfd-no-comp-lockless-0us-1ms \
# Latency evaluation
#io-notification-waitfree-no-comp-lockless \
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
vanilla-200us vanilla-0us-1ms no-sleep-0us-1ms
\
#io-notification-waitfree-no-comp-lockless-0us-1ms \
--
emper go-200us tokio-200us
#-- emper
}
./eval.py
"
${
COMMON_ARGS_LATENCY
[@]
}
"
-f
\
{
pipe,waitfd
}{
,-no-comp
}
-
{
200us,0us-1ms
}
\
eval_latency
()
{
io-stealing-
{
pipe,waitfd
}
-no-comp-
{
200us,0us-1ms
}
\
## Latency evaluation
io-notification-
{
,waitfree-
}
waitfd-no-comp-
{
200us,0us-1ms
}
\
echo
"Measuring latency"
--
emper
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
\
{
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