I had been looking for a Bugfix in the RHEL5.7 xen patches’ source and suddenly found the defaults of the Xenheap and that there is a command line option for it. Back on Xen2 this was still set on compile time and I had been trying to find out what the heap size is these days. I wanted to make sure this not reported as “free” in xm info, so that my Xen plugin will not report that memory as available.
Googling for xenheap_megabytes lead to a Citrix KB entry that even included a formula for the heap size:
• The “xenheap_megabytes=24” change is a workaround to a known issue with the version 5.5 release and its updates that would otherwise cause an artificial ceiling to be reached even though the host should be capable of starting more VMs. You would see error messages such as the following appearing in /var/log/xensource.log when trying to start a VM:
Xc.Error(“creating domain failed: hypercall 36 fail: 12: Cannot allocate memory (ret -1)”) even though the host has enough memory to start the VM.
• The default xenheap size is 16 megabytes. Changing it to 24 megabytes was done in this particular environment to start that number of VMs. In general, setting xenheap_megabytes to (12 + max-vms/10) is probably a good rule to use.