Commit 6872c67e authored by Michal Berger's avatar Michal Berger Committed by Jim Harris
Browse files

perf/vhost: Add NUMA-aware cgroup setup for the VMs



Each VM will be placed under dedicated cgroup pinned to proper set of
cpus and mem nodes as defined in the provided configuration.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 3d5e27df
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ declare -r sysfs_node=$sysfs_system/node
declare -r scheduler=$rootdir/test/event/scheduler/scheduler
declare -r plugin=scheduler_plugin

source "$testdir/cgroups.sh"
source "$rootdir/test/scheduler/cgroups.sh"

fold_list_onto_array() {
	local array=$1
+8 −0
Original line number Diff line number Diff line
@@ -773,6 +773,8 @@ function vm_setup() {
	notice "Saving to $vm_dir/run.sh"
	cat <<- RUN > "$vm_dir/run.sh"
		#!/bin/bash
		rootdir=$rootdir
		source "\$rootdir/test/scheduler/common.sh"
		qemu_log () {
			echo "=== qemu.log ==="
			[[ -s $vm_dir/qemu.log ]] && cat $vm_dir/qemu.log
@@ -790,12 +792,18 @@ function vm_setup() {
		chmod +r $vm_dir/*
		echo "Running VM in $vm_dir"
		rm -f $qemu_pid_file
		cgroup=\$(get_cgroup \$$)
		set_cgroup_attr_top_bottom \$$ cgroup.subtree_control "+cpuset"
		create_cgroup \$cgroup/qemu.$vm_num
		set_cgroup_attr "\$cgroup/qemu.$vm_num" cpuset.mems "$node_num"
		set_cgroup_attr "\$cgroup/qemu.$vm_num" cpuset.cpus "$task_mask"
		"\${qemu_cmd[@]}"

		echo "Waiting for QEMU pid file"
		sleep 1
		[[ ! -f $qemu_pid_file ]] && sleep 1
		[[ ! -f $qemu_pid_file ]] && echo "ERROR: no qemu pid file found" && exit 1
		set_cgroup_attr "\$cgroup/qemu.$vm_num" cgroup.threads \$(< "$qemu_pid_file")
		exit 0
		# EOF
	RUN