I am currently running VMware vSphere 5 on a server I use for various projects. Mainly I use it for honing my skills with administration and running a few game servers.
Recently I was considering a move to Xen (xen.org) or possibly Citrix XenServer (Free version).
When I was looking at the various features not included in XenServer I noticed that one feature not included was memory overcommit. To my limited knowledge this was / is on VMware vSphere. The problem is since I was using VMware in a small environment (1 server) I am not even sure if I was utilizing memory overcommit.
So I am wondering partially what it is (memory overcommit) and how do I know if I was utilizing it or not?
Memory over commitment means allowing running virtual machines to have more assigned RAM (in total) than the physical host actually has.
So, add up the RAM in your VM's that you want to run at the same time, then allow some room for the hypervisor and if the total is less than the physical RAM you're not over committing.
In VMware ESX and ESXi if you install VMware Tools, those will enable the memory management driver aka balloon driver.
Another mechanism to allow memory over-commitment is the swapping/paging at the ESX/ESXi level, but this is extremely slow and you should avoid it.
In ESXi 5 besides this, there are another 2 mechanisms to enable memory over-commitment. One is memory de-duplication, where segments of memory that are identical will be allocated only once. There is a vmkernel thread that will scan the memory in the idle time to find such segments.
The other mechanism is memory compression. Instead of swapping, the server will make some room by compressing some memory.
To know if you are using, add the memory allocated for all VMs, including the ESXi console, add about 100MB (this is not accurate) for the vmkernel . If this is grater than physical memory, then you are over-committing the memory.
You can also check for balloon size and for swap used for each VM in the performance counters of the ESXi server.
Xen does have dynamic memory management techinques, namely ballooning and self-ballooning.
It does not support memory overcommit, in that it does not allow VMs to actually use more memory than what you have physically available in your system.
Said another way: with Xen you have to physically partition your RAM between VMs, but you can still dynamically adjust those partitions at runtime without rebooting VMs.
VMware vSphere Hypervisor, on the other hand, can also give your VMs more ram than you physically have, by swapping it out to disk if it can't get enough real ram (by ballooning other VMs or the like).
PS, as a side note, Xen also has a completely different technology in Trascendent Memory: VMs supporting it (Linux >= 3.0 AFAIK) can use it for various purposes (mainly as page cache, reducing IOPS to actual disks).