[libvirt-users] start a domain, minimal memory request.

Dominik Psenner dpsenner at gmail.com
Wed Apr 11 07:29:19 UTC 2018


On 2018-04-09 10:07, Michal Privoznik wrote:
> On 04/09/2018 09:00 AM, llilulu wrote:
>> Hi:
>>     I use libvirt manage virtual guest, When I start many virtual domain(my host 128G physical memory), example, I start 100 guest, 1G per guest。sometime I will encounter "cannot allocate memory", "cannot set up guest memory \'pc.ram\': cannot allocate memory". sometime encounter qemu process killed by system(oom),
>>    I want to know what minimal memory need when start a domain ? and how many host free memory reserve can ensure vm running steady.
> There's no answer to this question I'm afraid. Not only it's undecidable
> problem but we also have history with it. I mean, at some point in the
> past somebody came up with 'great' idea to have libvirt computing some
> max value and setting it in cgroups to prevent qemu with a memleak
> eating all the resources. It's better to be safe than sorry, right?
> We've came up with several equations trying to figure that out. But then
> we had to revert the patches because no matter how hard we tried some
> users were still hitting the limit with valid use cases.
>
> IOW, qemu memory consumption is not static through domain lifetime. It
> changes. IIRC, hotplug operation was consuming surprisingly lot of
> memory (on the other hand, for a fraction of a second). Also, memory
> consumption is going to be dependant on domain configuration. Then, qemu
> is linking with some libraries too - they will add their own overhead.
>
> Long story short, I don't think there's an answer to your question.

There may not be an answer that is provable by fancy maths but you may 
be able to estimate the needed physical memory. You could also spawn a 
few guests and observe the memory you have left, eventually adding some 
if you need more. Or you could, if your guests are all the clones of 
each other, observe one and multiply that estimate with the number of 
guests you are about to spawn. Add some percent to the outcome plus 2gb 
for safety plus a little bit of salt and you should have a very good 
approximation. With that you should come to a close match of the memory 
you are going to need. Note also that your host should have configured 
some - in your case I'd calculate at least 16gb - swap, so you may well 
be able to handle memory bursts that go beyond the physically available 
memory. Surely guests will suffer performance penalties unless you are 
willing to mount more ram.




More information about the libvirt-users mailing list