I'm admittedly new to XenServer. I've been more of a VMware guy up until now. So, I'm trying to make sure I'm understanding how this dynamic memory thing works in XenServer.
In VMware, you set an amount of RAM per VM (say, 4 GB) and the hypervisor will grant it *up to* 4 GB of RAM, but that provisioned memory is thin, and you can grant more memory than you actually have on the hypervisor as long as all the collected VM memory usage doesn't exceed the max physical RAM. ESX just does all of this automatically, unless you specify you want a certain RAM allocation physically dedicated to a particular VM.
In XenServer, it almost seems to be the opposite, unless I'm confused. A new VM has a static memory amount that it actually reserves in full from the hypervisor. So, you can only assign out as much memory to the VMs as you have in the hypervisor, thick provisioning style. At least, it appears that way to me, because when I assign 4 GB of RAM to a VM that VM says '4 GB used' even when idle, and the total available RAM at the hypervisor is 4 GB less.
But, then, there's the option to 'automatically assign memory within a range'. This is where I define a minimum and maximum amount of memory for a VM and XenServer decides how much to give that VM depending on it's workload and the total hypervisor workload.
When I assign a memory range to a VM now (2-4 GB), it consumes all of it right away. But, if I understand this right, as the workload of the hypervisor increases, XenServer will decrease the amount of RAM it gives the VM. Do I have that right? Or am I misunderstanding how all of this works on XenServer?