virsh provides Linux System Administrators with the ability to dynamically scale allocated memory to virtual guests during runtime.
# virsh dommemstat mySQL01
actual 2097152
rss 903040
dommemstat shows that the domain web-server has a memory allocation limitof 2097152 kB and is currently using 903040 kB. You can confirm this with ps.
# ps -C qemu-kvm -o rss,cmd
RSS CMD
903040 /usr/bin/qemu-kvm -name mySQL01 -S -M pc-1.2 -enable-kvm -m 2048 -smp
The memory allocation limit is set with setmaxmem and can only be performed whilst the domain is inactive.
# virsh setmaxmem mySQL01 1048576 --config
By passing setmaxmem the config option the memory allocation limit iswritten to the virsh configuration file.
The current memory allocation for a guest domain is set with setmem.
# virsh setmem mySQL01 786432 --config --live
When passing setmem the live option, a memory balloon is performed on the running guest and the change happens instantly. This can be verified with dominfo.
# virsh dominfo mySQL01
Id: 1
Name: mySQL01
UUID: a1a0se38-20ff-134b-a0af-2bbc4e4ce167
OS Type: hvm
State: running
CPU(s): 4
CPU time: 31.9s
Max memory: 1048576 KiB
Used memory: 786432 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c782,c903 (enforcing)