1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0+ 3# 4# Get an estimate of how CPU-hoggy to be. 5# 6# Usage: cpus2use.sh 7# 8# Copyright (C) IBM Corporation, 2013 9# 10# Authors: Paul E. McKenney <paulmck@linux.ibm.com> 11 12if test -n "$TORTURE_ALLOTED_CPUS" 13then 14 echo $TORTURE_ALLOTED_CPUS 15 exit 0 16fi 17ncpus=`grep '^processor' /proc/cpuinfo | wc -l` 18if mpstat -V > /dev/null 2>&1 19then 20 idlecpus=`mpstat | tail -1 | \ 21 awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` 22else 23 # No mpstat command, so use all available CPUs. 24 idlecpus=$ncpus 25fi 26awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null ' 27BEGIN { 28 cpus2use = idlecpus; 29 if (cpus2use < 1) 30 cpus2use = 1; 31 if (cpus2use < ncpus / 10) 32 cpus2use = ncpus / 10; 33 if (cpus2use == int(cpus2use)) 34 cpus2use = int(cpus2use) 35 else 36 cpus2use = int(cpus2use) + 1 37 print cpus2use; 38}' 39 40