Added auto-ballooning

This commit is contained in:
Actaeus Curabitur 2023-12-25 23:34:07 -06:00
parent a8d74f2ea7
commit 0c74876b91
4 changed files with 72 additions and 0 deletions

View file

@ -0,0 +1,10 @@
[Unit]
Description=Automatically adjust balloon size to free up unused memory
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/bin/bash /root/scripts/balloon.sh
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,21 @@
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

View file

@ -0,0 +1,9 @@
[Unit]
Description=Update balloon sizes every 10 minutes
[Timer]
OnCalendar=*:0/10
Unit=balloon.service
[Install]
WantedBy=multi-user.target

View file

@ -99,3 +99,35 @@ libvirtd:
# - file: /etc/systemd/network/br1.netdev # - file: /etc/systemd/network/br1.netdev
# - file: /etc/systemd/network/br1.network # - file: /etc/systemd/network/br1.network
# - file: /etc/systemd/network/uplink.network # - file: /etc/systemd/network/uplink.network
/root/scripts/balloon.sh:
file.managed:
- source: salt://roles/maintain/host/balloon.sh
- user: root
- group: root
- mode: 644
/lib/systemd/system/balloon.service:
file.managed:
- source: salt://roles/maintain/host/balloon.service
- user: root
- group: root
- mode: 644
/lib/systemd/system/balloon.timer:
file.managed:
- source: salt://roles/maintain/host/balloon.timer
- user: root
- group: root
- mode: 644
balloon-reload:
module.run:
- name: service.systemctl_reload
- onchanges:
- file: /lib/systemd/system/*
balloon.timer:
service.running:
- enable: true