cpus2use.sh 829 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. if test -n "$TORTURE_ALLOTED_CPUS"
  12. then
  13. echo $TORTURE_ALLOTED_CPUS
  14. exit 0
  15. fi
  16. ncpus=`grep '^processor' /proc/cpuinfo | wc -l`
  17. if mpstat -V > /dev/null 2>&1
  18. then
  19. idlecpus=`mpstat | tail -1 | \
  20. awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'`
  21. else
  22. # No mpstat command, so use all available CPUs.
  23. idlecpus=$ncpus
  24. fi
  25. awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null '
  26. BEGIN {
  27. cpus2use = idlecpus;
  28. if (cpus2use < 1)
  29. cpus2use = 1;
  30. if (cpus2use < ncpus / 10)
  31. cpus2use = ncpus / 10;
  32. if (cpus2use == int(cpus2use))
  33. cpus2use = int(cpus2use)
  34. else
  35. cpus2use = int(cpus2use) + 1
  36. print cpus2use;
  37. }'