As a person involved in the terminal services of Microsoft, Citrix and others, I often encounter with customers the situation when 8, 16 or more gigabytes of memory is put on the server to work with a 32-bit operating system. Theoretical knowledge and practical observations allow us to insist that for a 32-bit operating system, more than 4 gigabytes of memory is wasteful and incorrect. Not only due to the fact that the operating system does not use all the memory (without PAE), but due to the fact that 32-bit applications are not able, for the most part, to work with such a memory size.
You have to ask what is XenServer? But with it - Apparently, guided by the same thoughts, Citrix implemented additional functionality in the XenServer 5.6 hypervisor — setting the recommended and maximum memory values in the template settings. That is, you, creating a virtual machine template, can set these values yourself. After that, all the virtual machines that you deploy from this template will have these settings, and will not allow you to go beyond them, without manual intervention.
A good example of this functionality is the template included in the default XenServer - XenApp (32-bit). If you create a virtual machine using this template, then later you will not be able to increase the memory capacity of more than 4 gigabytes (without additional configuration).
The Citrix support site has an article describing the installation of these parameters and the process of changing them -
CTX126320 .