162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+ 362306a36Sopenharmony_ci# 462306a36Sopenharmony_ci# Get an estimate of how CPU-hoggy to be. 562306a36Sopenharmony_ci# 662306a36Sopenharmony_ci# Usage: cpus2use.sh 762306a36Sopenharmony_ci# 862306a36Sopenharmony_ci# Copyright (C) IBM Corporation, 2013 962306a36Sopenharmony_ci# 1062306a36Sopenharmony_ci# Authors: Paul E. McKenney <paulmck@linux.ibm.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciif test -n "$TORTURE_ALLOTED_CPUS" 1362306a36Sopenharmony_cithen 1462306a36Sopenharmony_ci echo $TORTURE_ALLOTED_CPUS 1562306a36Sopenharmony_ci exit 0 1662306a36Sopenharmony_cifi 1762306a36Sopenharmony_cincpus=`grep '^processor' /proc/cpuinfo | wc -l` 1862306a36Sopenharmony_ciif mpstat -V > /dev/null 2>&1 1962306a36Sopenharmony_cithen 2062306a36Sopenharmony_ci idlecpus=`mpstat | tail -1 | \ 2162306a36Sopenharmony_ci awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'` 2262306a36Sopenharmony_cielse 2362306a36Sopenharmony_ci # No mpstat command, so use all available CPUs. 2462306a36Sopenharmony_ci idlecpus=$ncpus 2562306a36Sopenharmony_cifi 2662306a36Sopenharmony_ciawk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null ' 2762306a36Sopenharmony_ciBEGIN { 2862306a36Sopenharmony_ci cpus2use = idlecpus; 2962306a36Sopenharmony_ci if (cpus2use < 1) 3062306a36Sopenharmony_ci cpus2use = 1; 3162306a36Sopenharmony_ci if (cpus2use < ncpus / 10) 3262306a36Sopenharmony_ci cpus2use = ncpus / 10; 3362306a36Sopenharmony_ci if (cpus2use == int(cpus2use)) 3462306a36Sopenharmony_ci cpus2use = int(cpus2use) 3562306a36Sopenharmony_ci else 3662306a36Sopenharmony_ci cpus2use = int(cpus2use) + 1 3762306a36Sopenharmony_ci print cpus2use; 3862306a36Sopenharmony_ci}' 3962306a36Sopenharmony_ci 40