Commit 517f17ae authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

torture: Handle jitter for CPUs that cannot be offlined



Currently, jitter.sh assumes that the underlying hypervisor will be
configured with all CPUs hotpluggable, with the possible exception
of CPU 0.  However, there are installations where the hypervisor
prohibits offlining, which breaks jitter.sh.  This commit therefore
lists the CPUs that cannot be offlined up front, and checks for the
case where no CPU can be offlined in the loop.

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 9aa55ec2
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -25,6 +25,18 @@ n=1

starttime=`gawk 'BEGIN { print systime(); }' < /dev/null`

nohotplugcpus=
for i in /sys/devices/system/cpu/cpu[0-9]*
do
	if test -f $i/online
	then
		:
	else
		curcpu=`echo $i | sed -e 's/^[^0-9]*//'`
		nohotplugcpus="$nohotplugcpus $curcpu"
	fi
done

while :
do
	# Check for done.
@@ -35,13 +47,15 @@ do
	fi

	# Set affinity to randomly selected online CPU
	cpus=`grep 1 /sys/devices/system/cpu/*/online |
	if cpus=`grep 1 /sys/devices/system/cpu/*/online 2>&1 |
		 sed -e 's,/[^/]*$,,' -e 's/^[^0-9]*//'`

	# Do not leave out poor old cpu0 which may not be hot-pluggable
	if [ ! -f "/sys/devices/system/cpu/cpu0/online" ]; then
		cpus="0 $cpus"
	then
		:
	else
		cpus=
	fi
	# Do not leave out non-hot-pluggable CPUs
	cpus="$cpus $nohotplugcpus"

	cpumask=`awk -v cpus="$cpus" -v me=$me -v n=$n 'BEGIN {
		srand(n + me + systime());