scripts-root/libvirt/list_ram_usage.sh

41 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# list vnc display ports for all active VM
conv()
{
awk '{print $1"/1024"}'|bc
}
T_CURRENT=0
T_MAXIMUM=0
T_UNUSED=0
T_AVAILABLE=0
T_USABLE=0
R=`mktemp`
echo -e "VM # CUR # MAX # UNUS # AVAIL # USA" > $R
while read vm;
do
[ -z "$vm" ] && continue
MEMSTAT=`virsh domstats --balloon --raw "$vm"`
CURRENT=`echo "$MEMSTAT"|grep -oP "(?<=balloon.current=).*"|conv`
T_CURRENT=`expr "${CURRENT}" + "${T_CURRENT}"`
MAXIMUM=`echo "$MEMSTAT"|grep -oP "(?<=balloon.maximum=).*"|conv`
T_MAXIMUM=`expr "${MAXIMUM}" + "${T_MAXIMUM}"`
UNUSED=`echo "$MEMSTAT"|grep -oP "(?<=balloon.unused=).*"|conv`
T_UNUSED=`expr "${UNUSED}" + "${T_UNUSED}"`
AVAILABLE=`echo "$MEMSTAT"|grep -oP "(?<=balloon.available=).*"|conv`
T_AVAILABLE=`expr "${AVAILABLE}" + "${T_AVAILABLE}"`
USABLE=`echo "$MEMSTAT"|grep -oP "(?<=balloon.usable=).*"|conv`
T_USABLE=`expr "${USABLE}" + "${T_USABLE}"`
echo -e "$vm # ${CURRENT} # ${MAXIMUM} # ${UNUSED} # ${AVAILABLE} # ${USABLE}" >> $R
done <<< `virsh list --state-running --name`
R_=`mktemp`
cat $R|sort -t '#' -k 3 -n > $R_
echo $T_CURRENT
echo -e "TOTAL # ${T_CURRENT} # ${T_MAXIMUM} # ${T_UNUSED} # ${T_AVAILABLE} # ${T_USABLE}" >> $R_
cat $R_|column -t