#!/bin/bash -e # # Copyright (C) 2015 ScyllaDB . /usr/lib/scylla/scylla_lib.sh print_usage() { echo "scylla-sysconfig-setup --nic eth0 --mode posix --nr-hugepages 64 --user scylla --group scylla --homedir /var/lib/scylla --confdir /etc/scylla --setup-nic" echo " --nic specify NIC" echo " --mode network mode (posix, dpdk)" echo " --nr-hugepages number of hugepages" echo " --user user (dpdk requires root)" echo " --group group (dpdk requires root)" echo " --homedir scylla home directory" echo " --confdir scylla config directory" echo " --setup-nic setup NIC's interrupts, RPS, XPS" echo " --ami AMI instance mode" exit 1 } if [ $# -eq 0 ]; then print_usage fi while [ $# -gt 0 ]; do case "$1" in "--nic") NIC="$2" shift 2 ;; "--mode") NETWORK_MODE="$2" shift 2 ;; "--nr-hugepages") NR_HUGEPAGES="$2" shift 2 ;; "--user") USER="$2" shift 2 ;; "--group") GROUP="$2" shift 2 ;; "--homedir") SCYLLA_HOME="$2" shift 2 ;; "--confdir") SCYLLA_CONF="$2" shift 2 ;; "--setup-nic") SET_NIC=yes shift 1 ;; "--ami") AMI=yes shift 1 ;; *) print_usage ;; esac done echo Setting parameters on $SYSCONFIG/scylla-server if [ $SET_NIC = "yes" ]; then RPS_CPUS=$(/usr/lib/scylla/posix_net_conf.sh --cpu-mask $NIC) if [ "$RPS_CPUS" != "" ]; then CPUSET=$(echo $RPS_CPUS | /usr/lib/scylla/hex2list.py) /usr/lib/scylla/scylla_cpuset_setup --cpuset $CPUSET fi fi if [ "$NETWORK_MODE" == "dpdk" ]; then ETHDRV=`/usr/lib/scylla/dpdk-devbind.py --status | grep if=$NIC | sed -e "s/^.*drv=//" -e "s/ .*$//"` ETHPCIID=`/usr/lib/scylla/dpdk-devbind.py --status | grep if=$NIC | awk '{print $1}'` else # this will empty previous values ETHDRV="" ETHPCIID="" fi sed -e s#^NETWORK_MODE=.*#NETWORK_MODE=$NETWORK_MODE# \ -e s#^IFNAME=.*#IFNAME=$NIC# \ -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#^AMI=.*#AMI=$AMI# \ $SYSCONFIG/scylla-server > /tmp/scylla-server mv /tmp/scylla-server $SYSCONFIG/scylla-server