Below is the script to get the available CPU's from the allotted servers based on Number of Instances on that server:
Script:-
total_cpu=`lscpu | grep ^'CPU(s)' | awk '{print $2}'`
cpu_used=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' | sed 's/%//g')
used_cpus=`echo "$total_cpu*$cpu_used*0.01"|bc`
avail_cpus=`echo "$total_cpu-$used_cpus" | awk '{print int($1)}'`
num_inst=`pgrep -al pmon |egrep -v '(^#|\+|\-)' |awk '{print $2}' |wc -l`
if [[ "$avail_cpus" -le 1 ]]; then
echo "consider Default"
CHNLS=1
echo $CHNLS
else
if [[ "$num_inst" -lt 2 ]] ; then
echo "consider 90 percent"
avail_cpu2con=`echo "$avail_cpus*0.9"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
else
if [[ "$num_inst" -ge 2 ]] && [[ "$num_inst" -le 4 ]] ; then
echo "consider 75 percent"
avail_cpu2con=`echo "$avail_cpus*0.75"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
else
echo " consider 60 percent"
avail_cpu2con=`echo "$avail_cpus*0.60"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
fi
fi
fi
Script:-
total_cpu=`lscpu | grep ^'CPU(s)' | awk '{print $2}'`
cpu_used=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' | sed 's/%//g')
used_cpus=`echo "$total_cpu*$cpu_used*0.01"|bc`
avail_cpus=`echo "$total_cpu-$used_cpus" | awk '{print int($1)}'`
num_inst=`pgrep -al pmon |egrep -v '(^#|\+|\-)' |awk '{print $2}' |wc -l`
if [[ "$avail_cpus" -le 1 ]]; then
echo "consider Default"
CHNLS=1
echo $CHNLS
else
if [[ "$num_inst" -lt 2 ]] ; then
echo "consider 90 percent"
avail_cpu2con=`echo "$avail_cpus*0.9"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
else
if [[ "$num_inst" -ge 2 ]] && [[ "$num_inst" -le 4 ]] ; then
echo "consider 75 percent"
avail_cpu2con=`echo "$avail_cpus*0.75"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
else
echo " consider 60 percent"
avail_cpu2con=`echo "$avail_cpus*0.60"|bc`
CHNLS=`echo $avail_cpu2con | awk '{print int($1)}'`
echo $CHNLS
fi
fi
fi
Hope this helps..... suggest if any improvements are needed.