1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

Prepared intial version of benchmark script

This commit is contained in:
Dennis Potter 2018-07-28 16:43:35 +02:00
parent 54fd51269b
commit 3c0606740a

View file

@ -0,0 +1,186 @@
#!/bin/bash
#
# Integration Infiniband test using villas-node.
#
# @author Dennis Potter <dennis@dennispotter.eu>
# @copyright 2018, Institute for Automation of Complex Power Systems, EONERC
# @license GNU General Public License (version 3)
#
# VILLASnode
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##################################################################################
# Check if user is superuser. SU is used for namespace
if [[ "$EUID" -ne 0 ]]; then
echo "Please run as root"
exit 99
fi
# Check if Infiniband card is present
if [[ ! $(lspci | grep Infiniband) ]]; then
echo "Did not find any Infiniband cards in system"
exit 99
fi
SCRIPT=$(realpath $0)
SCRIPTPATH=$(dirname ${SCRIPT})
source ${SCRIPTPATH}/../tools/integration-tests-helper.sh
CONFIG_FILE=$(mktemp /tmp/ib-configuration-XXXX.conf)
CONFIG_FILE_TARGET=$(mktemp /tmp/ib-configuration-target-XXXX.conf)
CONFIG_FILE_SOURCE=$(mktemp /tmp/ib-configuration-source-XXXX.conf)
INPUT_FILE=$(mktemp)
NUM_VALUES=5
RATE_SAMPLES=10000
NUM_SAMPLES=100000
# Set config file with a MODE flag
cat > ${CONFIG_FILE} <<EOF
nodes = {
siggen = {
type = "signal",
signal = "mixed",
values = ${NUM_VALUES},
frequency = 3,
rate = ${RATE_SAMPLES},
limit = ${NUM_SAMPLES},
},
results = {
type = "file",
uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log",
},
ib_node_source = {
type = "infiniband",
rdma_port_space = "RDMA_PS_MODE",
in = {
address = "10.0.0.2:1337",
max_wrs = 8192,
cq_size = 8192,
poll_mode = "BUSY",
buffer_subtraction = 128,
},
out = {
address = "10.0.0.1:1337",
resolution_timeout = 1000,
max_wrs = 8192,
cq_size = 256,
send_inline = 1,
max_inline_data = 60,
}
}
ib_node_target = {
type = "infiniband",
rdma_port_space = "RDMA_PS_MODE",
in = {
address = "10.0.0.1:1337",
max_wrs = 8192,
cq_size = 8192,
poll_mode = "BUSY",
buffer_subtraction = 128,
}
}
}
EOF
# Set target and source config file, which is the same for both runs
cat > ${CONFIG_FILE_TARGET} <<EOF
@include "${CONFIG_FILE//\/tmp\/}"
paths = (
{
in = "ib_node_target",
out = "results"
}
)
EOF
cat > ${CONFIG_FILE_SOURCE} <<EOF
@include "${CONFIG_FILE//\/tmp\/}"
paths = (
{
in = "siggen",
out = "ib_node_source"
}
)
EOF
# Declare modes
MODES=("TCP" "UDP")
# Run through modes
for MODE in "${MODES[@]}"
do
echo "#############################"
echo "#############################"
echo "## START ${MODE} ##"
echo "#############################"
echo "#############################"
sed -i -e 's/RDMA_PS_MODE/RDMA_PS_'${MODE}'/g' ${CONFIG_FILE}
# Start receiving node
VILLAS_LOG_PREFIX=$(colorize "[Target Node] ") \
villas-node ${CONFIG_FILE_TARGET} &
target_node_proc=$!
# Wait for node to complete init
sleep 1
# Start sending pipe
VILLAS_LOG_PREFIX=$(colorize "[Source Node] ") \
ip netns exec namespace0 villas-node ${CONFIG_FILE_SOURCE} &
source_node_proc=$!
sleep $((${NUM_SAMPLES} / ${RATE_SAMPLES} + 1))
# Stop node
kill $target_node_proc
sleep 3
#ToDo: Add checks
echo "#############################"
echo "#############################"
echo "## STOP $MODE ##"
echo "#############################"
echo "#############################"
echo ""
sed -i -e 's/RDMA_PS_'${MODE}'/RDMA_PS_MODE/g' ${CONFIG_FILE}
done
rm ${CONFIG_FILE} ${CONFIG_FILE_TARGET} ${CONFIG_FILE_SOURCE} ${INPUT_FILE}
exit 0