for domain in `virsh list --name` do virsh dommemstat --period 5 $domain max=`virsh dominfo $domain | grep Max | grep -Po "\d+"` current=`virsh dominfo $domain | grep Used | grep -Po "\d+"` unused=`virsh dommemstat $domain | grep unused | grep -Po "\d+"` used=$(($current - $unused)) newfree=$((($max - $used) / 5)) if test $newfree -gt 524288 then target=$(($newfree + $used)) else target=$((524288 + $used)) fi if test $target -gt $max then target=$max fi echo "$domain: $target" virsh setmem $domain --size $target done