mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-29 04:37:00 +00:00
Add setting of --num-io-queues, --max-io-requests for AMI Signed-off-by: Shlomi Livne <shlomi@scylladb.com> Message-Id: <b94a63154a91c8568e194d7221b9ffc7d7813ebc.1455188901.git.shlomi@scylladb.com>
109 lines
2.9 KiB
Bash
Executable File
109 lines
2.9 KiB
Bash
Executable File
#!/bin/sh -e
|
|
#
|
|
# Copyright (C) 2015 ScyllaDB
|
|
|
|
print_usage() {
|
|
echo "scylla-sysconfig-setup -n eth0 -m posix -p 64 -u scylla -g scylla -r /var/lib/scylla -c /etc/scylla -N -a -k"
|
|
echo " -n specify NIC"
|
|
echo " -m network mode (posix, dpdk)"
|
|
echo " -p number of hugepages"
|
|
echo " -u user (dpdk requires root)"
|
|
echo " -g group (dpdk requires root)"
|
|
echo " -r scylla home directory"
|
|
echo " -c scylla config directory"
|
|
echo " -N setup NIC's interrupts, RPS, XPS"
|
|
echo " -a AMI instance mode"
|
|
echo " -d disk count"
|
|
exit 1
|
|
}
|
|
|
|
. /etc/os-release
|
|
if [ "$ID" = "ubuntu" ]; then
|
|
SYSCONFIG=/etc/default
|
|
else
|
|
SYSCONFIG=/etc/sysconfig
|
|
fi
|
|
. $SYSCONFIG/scylla-server
|
|
|
|
DISK_COUNT=0
|
|
while getopts n:m:p:u:g:d:c:Nakh OPT; do
|
|
case "$OPT" in
|
|
"n")
|
|
NIC=$OPTARG
|
|
;;
|
|
"m")
|
|
NETWORK_MODE=$OPTARG
|
|
;;
|
|
"p")
|
|
NR_HUGEPAGES=$OPTARG
|
|
;;
|
|
"u")
|
|
USER=$OPTARG
|
|
;;
|
|
"g")
|
|
GROUP=$OPTARG
|
|
;;
|
|
"r")
|
|
SCYLLA_HOME=$OPTARG
|
|
;;
|
|
"c")
|
|
SCYLLA_CONF=$OPTARG
|
|
;;
|
|
"N")
|
|
SETUP_NIC=1
|
|
;;
|
|
"a")
|
|
AMI=yes
|
|
;;
|
|
"d")
|
|
DISK_COUNT=$OPTARG
|
|
;;
|
|
"h")
|
|
print_usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo Setting parameters on $SYSCONFIG/scylla-server
|
|
|
|
ETHDRV=`/usr/lib/scylla/dpdk_nic_bind.py --status | grep if=$NIC | sed -e "s/^.*drv=//" -e "s/ .*$//"`
|
|
ETHPCIID=`/usr/lib/scylla/dpdk_nic_bind.py --status | grep if=$NIC | awk '{print $1}'`
|
|
NR_CPU=`cat /proc/cpuinfo |grep processor|wc -l`
|
|
NR_SHARDS=$NR_CPU
|
|
if [ $NR_CPU -ge 8 ] && [ "$SET_NIC" = "no" ]; then
|
|
NR_SHARDS=$((NR_CPU - 1))
|
|
SET_NIC="yes"
|
|
SCYLLA_ARGS="$SCYLLA_ARGS --cpuset 1-$NR_SHARDS --smp $NR_SHARDS"
|
|
fi
|
|
|
|
if [ "$AMI" = "yes" ] && [ $DISK_COUNT -gt 0 ]; then
|
|
NR_DISKS=$DISK_COUNT
|
|
if [ $NR_DISKS -lt 2 ]; then NR_DISKS=2; fi
|
|
|
|
NR_REQS=$((32 * $NR_DISKS / 2))
|
|
|
|
NR_IO_QUEUES=$NR_SHARDS
|
|
if [ $(($NR_REQS/$NR_IO_QUEUES)) -lt 4 ]; then
|
|
NR_IO_QUEUES=$(($NR_REQS / 4))
|
|
fi
|
|
|
|
NR_REQS=$(($(($NR_REQS / $NR_IO_QUEUES)) * $NR_IO_QUEUES))
|
|
|
|
SCYLLA_IO="$SCYLLA_IO --num-io-queues $NR_IO_QUEUES --max-io-requests $NR_REQS"
|
|
fi
|
|
|
|
sed -e s#^NETWORK_MODE=.*#NETWORK_MODE=$NETWORK_MODE# \
|
|
-e s#^ETHDRV=.*#ETHDRV=$ETHDRV# \
|
|
-e s#^ETHPCIID=.*#ETHPCIID=$ETHPCIID# \
|
|
-e s#^NR_HUGEPAGES=.*#NR_HUGEPAGES=$NR_HUGEPAGES# \
|
|
-e s#^USER=.*#USER=$USER# \
|
|
-e s#^GROUP=.*#GROUP=$GROUP# \
|
|
-e s#^SCYLLA_HOME=.*#SCYLLA_HOME=$SCYLLA_HOME# \
|
|
-e s#^SCYLLA_CONF=.*#SCYLLA_CONF=$SCYLLA_CONF# \
|
|
-e s#^SET_NIC=.*#SET_NIC=$SET_NIC# \
|
|
-e "s#^SCYLLA_ARGS=.*#SCYLLA_ARGS=\"$SCYLLA_ARGS\"#" \
|
|
-e "s#^SCYLLA_IO=.*#SCYLLA_IO=\"$SCYLLA_IO\"#" \
|
|
-e s#^AMI=.*#AMI=$AMI# \
|
|
$SYSCONFIG/scylla-server > /tmp/scylla-server
|
|
mv /tmp/scylla-server $SYSCONFIG/scylla-server
|