The rcutorture scripting uses the mpstat command to determine how much the system is being used, and adjusts make's -j argument accordingly. However, mpstat isn't installed by default, so it would be good if the scripting does something useful when mpstat isn't present. This commit therefore makes the scripts assumes that if mpstat is not present, they are free to use all the CPUs. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
41 lines
900 B
Bash
Executable File
41 lines
900 B
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# Get an estimate of how CPU-hoggy to be.
|
|
#
|
|
# Usage: cpus2use.sh
|
|
#
|
|
# Copyright (C) IBM Corporation, 2013
|
|
#
|
|
# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
|
|
|
|
if test -n "$TORTURE_ALLOTED_CPUS"
|
|
then
|
|
echo $TORTURE_ALLOTED_CPUS
|
|
exit 0
|
|
fi
|
|
ncpus=`grep '^processor' /proc/cpuinfo | wc -l`
|
|
if mpstat -V > /dev/null 2>&1
|
|
then
|
|
idlecpus=`mpstat | tail -1 | \
|
|
awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'`
|
|
else
|
|
# No mpstat command, so use all available CPUs.
|
|
echo The mpstat command is not available, so greedily using all CPUs.
|
|
idlecpus=$ncpus
|
|
fi
|
|
awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null '
|
|
BEGIN {
|
|
cpus2use = idlecpus;
|
|
if (cpus2use < 1)
|
|
cpus2use = 1;
|
|
if (cpus2use < ncpus / 10)
|
|
cpus2use = ncpus / 10;
|
|
if (cpus2use == int(cpus2use))
|
|
cpus2use = int(cpus2use)
|
|
else
|
|
cpus2use = int(cpus2use) + 1
|
|
print cpus2use;
|
|
}'
|
|
|