Create shell script .sh extension with below content. For e.g. lets assume shell script name is printMemCPU.sh inside /tmp.
Execute shell script. In example listed in this article
Below is sample output we see when running the script. As we can see below we see each running VM and memory & CPU allocated for that VM.
#!/bin/bash
#set -x
USAGE="usage: $0 [-t (print total values only)] [-m <additional Memory in GB/MB (see -m)>] [-c <additional cpus>] [-m (print mem in MB instead of GB)]"
ADDCPU=0
ADDMEM=0
VMS_USED_MEM=0
VMS_USED_CPU=0
TOTALSONLY=0
UNITMB=0
MEMDIVISOR=1024
MEMUNIT="GB"
while getopts tma:c: name
do
case $name in
t) TOTALSONLY=1;;
a) ADDMEM="$OPTARG";;
m) MEMUNIT="MB"
MEMDIVISOR=1;;
c) ADDCPU="$OPTARG";;
?) echo $USAGE;
exit 1;;
esac
done
shift $(($OPTIND - 1))
#test -n "$1" && ADDMEM=$1
#test -n "$2" && ADDCPU=$2
export MEM CPU VMS_USED_MEM VMS_USED_CPU
TOTALCPU=`xm info | awk '/^nr_cpus/{print $3}'`
let TOTALMEM=`xm info | awk '/^total_memory/{print $3}'`/$MEMDIVISOR
let FREEMEM=`xm info | awk '/^free_memory/{print $3}'`/$MEMDIVISOR
#echo "TOTALCPU: $TOTALCPU, TOTALMEM: $TOTALMEM, FREEMEM: $FRMEM"
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
while read line
do
set $line
UUID=$1
MEM=$3
CPU=$4
let MEM_IN_UNITS=$MEM/$MEMDIVISOR
let VMS_USED_MEM=VMS_USED_MEM+$MEM_IN_UNITS
let VMS_USED_CPU=VMS_USED_CPU+$CPU
VMNAME=`grep -i OVM_simple_name /OVS/Repositories/*/VirtualMachines/$UUID/vm.cfg | cut -d "'" -f 2`
test $TOTALSONLY -eq 0 && echo "$VMNAME: $UUID, $MEM_IN_UNITS $MEMUNIT, $CPU cpus"
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
done < <(xm list | grep 004)
#set -x
let DOM0_MEM=`xm list | awk '/^Domain-0/{print $3}'`/$MEMDIVISOR
let VMS_USED_MEM=VMS_USED_MEM+DOM0_MEM
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
let USED_MEM=$TOTALMEM-$FREEMEM
#echo "USED_MEM: $USED_MEM"
let PCT_USED_MEM=$USED_MEM*100/$TOTALMEM
let PCT_CPUUTIL=$VMS_USED_CPU*100/$TOTALCPU
#TOTALS_TEXT="utilization totals: $USED_MEM $MEMUNIT (${PCT_USED_MEM}%), $VMS_USED_CPU cpus (${PCT_CPUUTIL}%)"
#echo "current $TOTALS_TEXT"
#
let FREECPU=$TOTALCPU-$VMS_USED_CPU
echo "current utilization totals: $USED_MEM $MEMUNIT (${PCT_USED_MEM}%), $VMS_USED_CPU cpus (${PCT_CPUUTIL}%). Free: $FREEMEM $MEMUNIT, $FREECPU cpus"
if [ $ADDMEM -ne 0 -o $ADDCPU -ne 0 ]
then
let ADDMEM=$ADDMEM/$MEMDIVISOR
let FUTURMEM=$USED_MEM+$ADDMEM
let FUTURFREEMEM=$FREEMEM-$ADDMEM
let FUTURCPU=$VMS_USED_CPU+$ADDCPU
let FUTURFREECPU=$TOTALCPU-$FUTURCPU
let PCT_USED_MEM=$FUTURMEM*100/$TOTALMEM
let PCT_CPUUTIL=$FUTURCPU*100/$TOTALCPU
echo "future utilization totals: $FUTURMEM $MEMUNIT (${PCT_USED_MEM}%), $FUTURCPU cpus (${PCT_CPUUTIL}%). Free: $FUTURFREEMEM $MEMUNIT, $FUTURFREECPU cpus"
fi
#set -x
USAGE="usage: $0 [-t (print total values only)] [-m <additional Memory in GB/MB (see -m)>] [-c <additional cpus>] [-m (print mem in MB instead of GB)]"
ADDCPU=0
ADDMEM=0
VMS_USED_MEM=0
VMS_USED_CPU=0
TOTALSONLY=0
UNITMB=0
MEMDIVISOR=1024
MEMUNIT="GB"
while getopts tma:c: name
do
case $name in
t) TOTALSONLY=1;;
a) ADDMEM="$OPTARG";;
m) MEMUNIT="MB"
MEMDIVISOR=1;;
c) ADDCPU="$OPTARG";;
?) echo $USAGE;
exit 1;;
esac
done
shift $(($OPTIND - 1))
#test -n "$1" && ADDMEM=$1
#test -n "$2" && ADDCPU=$2
export MEM CPU VMS_USED_MEM VMS_USED_CPU
TOTALCPU=`xm info | awk '/^nr_cpus/{print $3}'`
let TOTALMEM=`xm info | awk '/^total_memory/{print $3}'`/$MEMDIVISOR
let FREEMEM=`xm info | awk '/^free_memory/{print $3}'`/$MEMDIVISOR
#echo "TOTALCPU: $TOTALCPU, TOTALMEM: $TOTALMEM, FREEMEM: $FRMEM"
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
while read line
do
set $line
UUID=$1
MEM=$3
CPU=$4
let MEM_IN_UNITS=$MEM/$MEMDIVISOR
let VMS_USED_MEM=VMS_USED_MEM+$MEM_IN_UNITS
let VMS_USED_CPU=VMS_USED_CPU+$CPU
VMNAME=`grep -i OVM_simple_name /OVS/Repositories/*/VirtualMachines/$UUID/vm.cfg | cut -d "'" -f 2`
test $TOTALSONLY -eq 0 && echo "$VMNAME: $UUID, $MEM_IN_UNITS $MEMUNIT, $CPU cpus"
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
done < <(xm list | grep 004)
#set -x
let DOM0_MEM=`xm list | awk '/^Domain-0/{print $3}'`/$MEMDIVISOR
let VMS_USED_MEM=VMS_USED_MEM+DOM0_MEM
#echo "VMS_USED_CPU: $VMS_USED_CPU, VMS_USED_MEM: $VMS_USED_MEM"
let USED_MEM=$TOTALMEM-$FREEMEM
#echo "USED_MEM: $USED_MEM"
let PCT_USED_MEM=$USED_MEM*100/$TOTALMEM
let PCT_CPUUTIL=$VMS_USED_CPU*100/$TOTALCPU
#TOTALS_TEXT="utilization totals: $USED_MEM $MEMUNIT (${PCT_USED_MEM}%), $VMS_USED_CPU cpus (${PCT_CPUUTIL}%)"
#echo "current $TOTALS_TEXT"
#
let FREECPU=$TOTALCPU-$VMS_USED_CPU
echo "current utilization totals: $USED_MEM $MEMUNIT (${PCT_USED_MEM}%), $VMS_USED_CPU cpus (${PCT_CPUUTIL}%). Free: $FREEMEM $MEMUNIT, $FREECPU cpus"
if [ $ADDMEM -ne 0 -o $ADDCPU -ne 0 ]
then
let ADDMEM=$ADDMEM/$MEMDIVISOR
let FUTURMEM=$USED_MEM+$ADDMEM
let FUTURFREEMEM=$FREEMEM-$ADDMEM
let FUTURCPU=$VMS_USED_CPU+$ADDCPU
let FUTURFREECPU=$TOTALCPU-$FUTURCPU
let PCT_USED_MEM=$FUTURMEM*100/$TOTALMEM
let PCT_CPUUTIL=$FUTURCPU*100/$TOTALCPU
echo "future utilization totals: $FUTURMEM $MEMUNIT (${PCT_USED_MEM}%), $FUTURCPU cpus (${PCT_CPUUTIL}%). Free: $FUTURFREEMEM $MEMUNIT, $FUTURFREECPU cpus"
fi
Execute shell script. In example listed in this article
/tmp/printMemCPU.sh
Below is sample output we see when running the script. As we can see below we see each running VM and memory & CPU allocated for that VM.
testvm-1: 0004fb00000600000dc80091c7f16169, 4 GB, 1 cpus
testvm-OL7: 0004fb00000600001e84a1ecd1663757, 4 GB, 1 cpus
AppControl: 0004fb00000600001ec36fa6da3a1473, 32 GB, 12 cpus
testvm-OL7: 0004fb00000600001e84a1ecd1663757, 4 GB, 1 cpus
AppControl: 0004fb00000600001ec36fa6da3a1473, 32 GB, 12 cpus
Products to which Article Applies
Oracle Virtual Server (OVS)
tarun boyella
No comments:
Post a Comment