I've got a basic question on VM setup. I'm using Hyper-V, but I think the question is pretty generic. This is for a home office, I want to get reasonably good performance on the VMs without a lot of work. I use the VMs for testing/debugging my software. Ideally I would have all of the OS's started, but only one (probably zero most of the time) would be getting active use at a time.
Are there some general guidelines for memory allocation to VM's? On one extreme, you could divide the total memory by the number of VM's (4 GB total, 4 VM's -> 1 GB each). At the other end of the extreme you could give every VM full memory and let the OS arbitrate. I would guess both are wrong! I'm looking for a "rule of thumb" for reasonable performance. I have no idea how the VM server manages memory for the VM's.
 I asked this question because I incorrectly assumed that Hyper-V (2008 R2 version) could dynamically provide additional memory to VMs if additional was available. My thought was that I could over allocate the memory, as long as my usage only peaked one VM at a time. Since Hyper-V wants to allocate the fixed memory for each VM when they are started, I need to either have some VM's shut down and only run the ones I need, or set the VM's to lower memory allocations and make sure the physical memory is enough for all of the allocations plus the Hyper-V process and (possibly) the host OS.
It sounds like VMWare has more options along these lines, as noted in the answers provided. [/edit]