.. | .. |
---|
1 | 1 | #!/bin/bash |
---|
| 2 | +# SPDX-License-Identifier: GPL-2.0+ |
---|
2 | 3 | # |
---|
3 | 4 | # Get an estimate of how CPU-hoggy to be. |
---|
4 | 5 | # |
---|
5 | 6 | # Usage: cpus2use.sh |
---|
6 | 7 | # |
---|
7 | | -# This program is free software; you can redistribute it and/or modify |
---|
8 | | -# it under the terms of the GNU General Public License as published by |
---|
9 | | -# the Free Software Foundation; either version 2 of the License, or |
---|
10 | | -# (at your option) any later version. |
---|
11 | | -# |
---|
12 | | -# This program is distributed in the hope that it will be useful, |
---|
13 | | -# but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | | -# GNU General Public License for more details. |
---|
16 | | -# |
---|
17 | | -# You should have received a copy of the GNU General Public License |
---|
18 | | -# along with this program; if not, you can access it online at |
---|
19 | | -# http://www.gnu.org/licenses/gpl-2.0.html. |
---|
20 | | -# |
---|
21 | 8 | # Copyright (C) IBM Corporation, 2013 |
---|
22 | 9 | # |
---|
23 | | -# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> |
---|
| 10 | +# Authors: Paul E. McKenney <paulmck@linux.ibm.com> |
---|
24 | 11 | |
---|
| 12 | +if test -n "$TORTURE_ALLOTED_CPUS" |
---|
| 13 | +then |
---|
| 14 | + echo $TORTURE_ALLOTED_CPUS |
---|
| 15 | + exit 0 |
---|
| 16 | +fi |
---|
25 | 17 | ncpus=`grep '^processor' /proc/cpuinfo | wc -l` |
---|
26 | | -idlecpus=`mpstat | tail -1 | \ |
---|
27 | | - awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` |
---|
| 18 | +if mpstat -V > /dev/null 2>&1 |
---|
| 19 | +then |
---|
| 20 | + idlecpus=`mpstat | tail -1 | \ |
---|
| 21 | + awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` |
---|
| 22 | +else |
---|
| 23 | + # No mpstat command, so use all available CPUs. |
---|
| 24 | + echo The mpstat command is not available, so greedily using all CPUs. |
---|
| 25 | + idlecpus=$ncpus |
---|
| 26 | +fi |
---|
28 | 27 | awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null ' |
---|
29 | 28 | BEGIN { |
---|
30 | 29 | cpus2use = idlecpus; |
---|