Wednesday, July 31, 2019

Auto - CPU Parallel calculation

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



Hope this helps..... suggest if any improvements are needed.

PostgreSql: Useful Commands-

 1)   ************************* Users ***************************  -- List of users with roles assigned: SELECT usename AS role_name,   CASE...