1 #!/bin/bash 2 # 3 # Get an estimate of how CPU-hoggy to be. 4 # 5 # Usage: cpus2use.sh 6 # 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 # Copyright (C) IBM Corporation, 2013 22 # 23 # Authors: Paul E. McKenney <paulmck (at] linux.vnet.ibm.com> 24 25 ncpus=`grep '^processor' /proc/cpuinfo | wc -l` 26 idlecpus=`mpstat | tail -1 | \ 27 awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` 28 awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null ' 29 BEGIN { 30 cpus2use = idlecpus; 31 if (cpus2use < 1) 32 cpus2use = 1; 33 if (cpus2use < ncpus / 10) 34 cpus2use = ncpus / 10; 35 if (cpus2use == int(cpus2use)) 36 cpus2use = int(cpus2use) 37 else 38 cpus2use = int(cpus2use) + 1 39 print cpus2use; 40 }' 41 42