diff --git a/dist/common/scripts/scylla_cpuset_setup b/dist/common/scripts/scylla_cpuset_setup new file mode 100755 index 0000000000..5a755e39cb --- /dev/null +++ b/dist/common/scripts/scylla_cpuset_setup @@ -0,0 +1,42 @@ +#!/bin/bash -e +# +# Copyright (C) 2016 ScyllaDB + +print_usage() { + echo "scylla_cpuset_setup --cpuset 1-7 --smp 7" + echo " --cpuset CPUs to use (in cpuset(7) format; default: all))" + echo " --smp number of threads (default: one per CPU)" + exit 1 +} + +CPUSET= +SMP= +while [ $# -gt 0 ]; do + case "$1" in + "--cpuset") + CPUSET=$2 + shift 2 + ;; + "--smp") + SMP=$2 + shift 2 + ;; + *) + print_usage + ;; + esac +done + +if [ "$CPUSET" = "" ] && [ "$SMP" = "" ]; then + print_usage +fi + +OUT="CPUSET=\"" +if [ "$CPUSET" != "" ]; then + OUT="$OUT--cpuset $CPUSET " +fi +if [ "$SMP" != "" ]; then + OUT="$OUT--smp $SMP " +fi +OUT="$OUT\"" +echo $OUT > /etc/scylla.d/cpuset.conf diff --git a/dist/common/scripts/scylla_sysconfig_setup b/dist/common/scripts/scylla_sysconfig_setup index c42c0049c9..2ecc57bb32 100755 --- a/dist/common/scripts/scylla_sysconfig_setup +++ b/dist/common/scripts/scylla_sysconfig_setup @@ -75,11 +75,8 @@ 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` if [ "$AMI" = "yes" ] && [ $NR_CPU -ge 8 ] && [ "$SET_NIC" = "no" ]; then - NR=$((NR_CPU - 1)) SET_NIC="yes" - SCYLLA_ARGS="$SCYLLA_ARGS --cpuset 1-$NR --smp $NR" fi sed -e s#^NETWORK_MODE=.*#NETWORK_MODE=$NETWORK_MODE# \ -e s#^IFNAME=.*#IFNAME=$NIC# \ diff --git a/dist/common/scylla.d/cpuset.conf b/dist/common/scylla.d/cpuset.conf new file mode 100644 index 0000000000..047794a202 --- /dev/null +++ b/dist/common/scylla.d/cpuset.conf @@ -0,0 +1,4 @@ +# DO NO EDIT +# This file should be automatically configure by scylla_cpuset_setup +# +# CPUSET="--cpuset 0 --smp 1" diff --git a/dist/common/systemd/scylla-server.service.in b/dist/common/systemd/scylla-server.service.in index 117a936600..4743aa086c 100644 --- a/dist/common/systemd/scylla-server.service.in +++ b/dist/common/systemd/scylla-server.service.in @@ -11,7 +11,7 @@ EnvironmentFile=@@SYSCONFDIR@@/scylla-server EnvironmentFile=/etc/scylla.d/*.conf WorkingDirectory=$SCYLLA_HOME ExecStartPre=/usr/bin/sudo /usr/lib/scylla/scylla_prepare -ExecStart=/usr/bin/scylla $SCYLLA_ARGS $SEASTAR_IO $DEV_MODE +ExecStart=/usr/bin/scylla $SCYLLA_ARGS $SEASTAR_IO $DEV_MODE $CPUSET ExecStopPost=/usr/bin/sudo /usr/lib/scylla/scylla_stop TimeoutStartSec=900 KillMode=process diff --git a/dist/redhat/scylla.spec.in b/dist/redhat/scylla.spec.in index b1bdd81b82..dd53d46f6b 100644 --- a/dist/redhat/scylla.spec.in +++ b/dist/redhat/scylla.spec.in @@ -163,6 +163,7 @@ rm -rf $RPM_BUILD_ROOT %{_prefix}/lib/scylla/scylla_io_setup %{_prefix}/lib/scylla/scylla_dev_mode_setup %{_prefix}/lib/scylla/scylla_kernel_check +%{_prefix}/lib/scylla/scylla_cpuset_setup %{_prefix}/lib/scylla/posix_net_conf.sh %{_prefix}/lib/scylla/dpdk_nic_bind.py %{_prefix}/lib/scylla/dpdk_nic_bind.pyc diff --git a/dist/ubuntu/debian/scylla-server.upstart b/dist/ubuntu/debian/scylla-server.upstart index 33f49353d0..ff8435ab3b 100644 --- a/dist/ubuntu/debian/scylla-server.upstart +++ b/dist/ubuntu/debian/scylla-server.upstart @@ -41,7 +41,7 @@ script fi . "$i" done - exec /usr/bin/scylla $SCYLLA_ARGS $SEASTAR_IO $DEV_MODE + exec /usr/bin/scylla $SCYLLA_ARGS $SEASTAR_IO $DEV_MODE $CPUSET end script post-stop script