Home | History | Annotate | Download | only in bin
      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