Commit 50a33791 authored by Nelson Bighetti's avatar Nelson Bighetti Committed by Jim Harris
Browse files

scripts/setup.sh: add option to persist number of hugepages



Change-Id: Ic4d97c264705feb71f31ba1ba4f2284c91a274e1
Signed-off-by: default avatarNelson Bighetti <bachmanity138@gmail.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26648


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarMichal Berger <michal.berger@nutanix.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz@tzawadzki.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
parent 2c9e2b43
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@ fi
rootdir=$(readlink -f $(dirname $0))/..
source "$rootdir/scripts/common.sh"

# Path for persisted sysctl configuration (Linux only usage)
SYSCTL_SPDK_CONF=/usr/local/lib/sysctl.d/99-spdk.conf

function usage() {
	if [[ $os == Linux ]]; then
		options="[config|reset|status|cleanup|interactive|help]"
@@ -98,6 +101,9 @@ function usage() {
	echo "FORCE_NIC_UIO_REBIND"
	echo "                  When set to 'yes', an attempt to reload nic_uio will be made regardless"
	echo "                  of the kernel environment. Applicable only under FreeBSD."
	echo "PERSIST_HUGE      When set to 'yes', persist number of hugepages to $SYSCTL_SPDK_CONF"
	echo "                  as vm.nr_hugepages. NUMA per-node persistence is not supported, and this option is ignored"
	echo "                  when HUGENODE is set."
	exit 0
}

@@ -514,7 +520,10 @@ check_hugepages_alloc() {
	fi
}

clear_hugepages() { echo 0 > /proc/sys/vm/nr_hugepages; }
clear_hugepages() {
	echo 0 > /proc/sys/vm/nr_hugepages
	rm -f "$SYSCTL_SPDK_CONF"
}

configure_linux_hugepages() {
	local node system_nodes
@@ -531,6 +540,17 @@ configure_linux_hugepages() {

	if [[ -z $HUGENODE ]]; then
		check_hugepages_alloc /proc/sys/vm/nr_hugepages

		# Optionally persist number of hugepages
		[[ $PERSIST_HUGE == yes ]] || return 0
		local current_nr

		current_nr=$(< /proc/sys/vm/nr_hugepages)
		((current_nr > 0)) || return 0
		echo "Trying to persist vm.nr_hugepages=$current_nr to $SYSCTL_SPDK_CONF"
		mkdir -p "$(dirname $SYSCTL_SPDK_CONF)"
		echo "vm.nr_hugepages=$current_nr" > "$SYSCTL_SPDK_CONF"

		return 0
	fi