Commit 3fa77bf2 authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

scripts/perf: Include per-node hugepages stats in collect-vmstat



This may help in debugging how hugepages are distributed across
different numa nodes during tests. Example:

  # old
  ... ----extra info----
  ... avail shmem ahp_total hp_free hp_size test
  ... 46938928 5997040 2048 1778 2048 N/A

  # new
  ... ----extra info----
  ... avail shmem hp_total hp_free hp_size hp_per_node test
  ... 46938928 5997040 2048 1778 2048 N/A N0-1048576kB_f=0,N0-1048576kB_t=0,N0-2048kB_f=1778,N0-2048kB_t=2048,N1-1048576kB_f=0,N1-1048576kB_t=0,N1-2048kB_f=0,N1-2048kB_t=0 N/A

Granted it's a mouthful, but it does improve view of the system's
resources.

Change-Id: Ib7737752c9df9a67c32b656a5df294ce32b65ef6
Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24180


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz@tzawadzki.com>
parent 0070858e
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ shopt -s nullglob extglob
pmdir=$(readlink -f "$(dirname "$0")")
rootdir=$(readlink -f "$pmdir/../../../")
source "$pmdir/common"
source "$rootdir/test/scheduler/common.sh"

help() {
	cat <<- HELP
@@ -31,7 +32,7 @@ help() {
}

get_extra_info() {
	local match="" data
	local match="" data node hp hps

	case "$PM_OS" in
		Linux)
@@ -41,6 +42,15 @@ get_extra_info() {
			match+="|Hugepagesize"

			data=($(grep -E "^($match):" /proc/meminfo | awk '{print $2}'))
			if is_numa; then
				for node in "${nodes[@]}"; do
					for hp in "/sys/devices/system/node/node$node/hugepages/"*; do
						hps=${hps:+$hps,}N$node-${hp#*hugepages-}_f=$(< "$hp/free_hugepages")
						hps=${hps:+$hps,}N$node-${hp#*hugepages-}_t=$(< "$hp/nr_hugepages")
					done
				done
				data+=("$hps")
			fi
			;&
		*) data+=("$TEST_TAG") ;;
	esac
@@ -53,7 +63,13 @@ set_extra_info_header() {

	# Keep the header ordered as in get_extra_info()
	case "$PM_OS" in
		Linux) _header="avail shmem hp_total hp_free hp_size test" ;;
		Linux)
			_header="avail shmem hp_total hp_free hp_size"
			if is_numa; then
				_header+=" hp_per_node"
			fi
			_header+=" test"
			;;
		FreeBSD) _header="test" ;;
	esac

@@ -122,4 +138,6 @@ save_pm_pid
trap 'cleanup' EXIT
trap 'retag' USR1

map_cpus

_vmstat "$count" "$interval" "$reprint_header"