40 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.0+3#4# Get an estimate of how CPU-hoggy to be.5#6# Usage: cpus2use.sh7#8# Copyright (C) IBM Corporation, 20139#10# Authors: Paul E. McKenney <paulmck@linux.ibm.com>11 12if test -n "$TORTURE_ALLOTED_CPUS"13then14 echo $TORTURE_ALLOTED_CPUS15 exit 016fi17ncpus=`grep '^processor' /proc/cpuinfo | wc -l`18if mpstat -V > /dev/null 2>&119then20 idlecpus=`mpstat | tail -1 | \21 awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'`22else23 # No mpstat command, so use all available CPUs.24 idlecpus=$ncpus25fi26awk -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 else36 cpus2use = int(cpus2use) + 137 print cpus2use;38}'39 40