18c2ecf20Sopenharmony_ci#!/bin/bash 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+ 38c2ecf20Sopenharmony_ci# 48c2ecf20Sopenharmony_ci# Get an estimate of how CPU-hoggy to be. 58c2ecf20Sopenharmony_ci# 68c2ecf20Sopenharmony_ci# Usage: cpus2use.sh 78c2ecf20Sopenharmony_ci# 88c2ecf20Sopenharmony_ci# Copyright (C) IBM Corporation, 2013 98c2ecf20Sopenharmony_ci# 108c2ecf20Sopenharmony_ci# Authors: Paul E. McKenney <paulmck@linux.ibm.com> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ciif test -n "$TORTURE_ALLOTED_CPUS" 138c2ecf20Sopenharmony_cithen 148c2ecf20Sopenharmony_ci echo $TORTURE_ALLOTED_CPUS 158c2ecf20Sopenharmony_ci exit 0 168c2ecf20Sopenharmony_cifi 178c2ecf20Sopenharmony_cincpus=`grep '^processor' /proc/cpuinfo | wc -l` 188c2ecf20Sopenharmony_ciif mpstat -V > /dev/null 2>&1 198c2ecf20Sopenharmony_cithen 208c2ecf20Sopenharmony_ci idlecpus=`mpstat | tail -1 | \ 218c2ecf20Sopenharmony_ci awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` 228c2ecf20Sopenharmony_cielse 238c2ecf20Sopenharmony_ci # No mpstat command, so use all available CPUs. 248c2ecf20Sopenharmony_ci echo The mpstat command is not available, so greedily using all CPUs. 258c2ecf20Sopenharmony_ci idlecpus=$ncpus 268c2ecf20Sopenharmony_cifi 278c2ecf20Sopenharmony_ciawk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null ' 288c2ecf20Sopenharmony_ciBEGIN { 298c2ecf20Sopenharmony_ci cpus2use = idlecpus; 308c2ecf20Sopenharmony_ci if (cpus2use < 1) 318c2ecf20Sopenharmony_ci cpus2use = 1; 328c2ecf20Sopenharmony_ci if (cpus2use < ncpus / 10) 338c2ecf20Sopenharmony_ci cpus2use = ncpus / 10; 348c2ecf20Sopenharmony_ci if (cpus2use == int(cpus2use)) 358c2ecf20Sopenharmony_ci cpus2use = int(cpus2use) 368c2ecf20Sopenharmony_ci else 378c2ecf20Sopenharmony_ci cpus2use = int(cpus2use) + 1 388c2ecf20Sopenharmony_ci print cpus2use; 398c2ecf20Sopenharmony_ci}' 408c2ecf20Sopenharmony_ci 41