Added auto-ballooning
This commit is contained in:
parent
a8d74f2ea7
commit
0c74876b91
4 changed files with 72 additions and 0 deletions
10
states/roles/maintain/host/balloon.service
Normal file
10
states/roles/maintain/host/balloon.service
Normal 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
|
21
states/roles/maintain/host/balloon.sh
Normal file
21
states/roles/maintain/host/balloon.sh
Normal 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
|
9
states/roles/maintain/host/balloon.timer
Normal file
9
states/roles/maintain/host/balloon.timer
Normal 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
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue