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