| .. | .. |
|---|
| 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; |
|---|