Other Operational Issues
Because ESX makes extensive use of memory, there are operational concerns regarding the use of memory, too. The main issue with memory is to prevent the overcommitment of memory during runtime of the VMs. The runtime covers the memory actually used, and not always what is allocated. A VM may have 16GB of memory allocated to it. If this much memory is allocated to all the VMs, on a 32GB ESX Server, only one VM could be created unless the memory is overcommitted as the OS takes some memory. If the goal is to run ten VMs, there is a memory requirement of 160GB, which is quite a bit over the 64GB server memory limit inherent in ESX. Which means that if all the 16GB of memory is actually used by a VM, the ESX Server will need to start swapping (or paging) memory out in large chunks to accommodate the running of another VM. However, if in reality only 1GB of each VM is used, there is only 10GB of the available 32GB of memory in use at any time, allowing more VMs to be created and used without swapping memory, even though there is potential for up to 160GB of memory to be used. In this case, it is best to assign memory sparingly and to only give a VM what it needs to run. This way memory management will allow a denser population of VMs to run. Note it is not possible to create a VM that will exceed the physical memory of the machine.
Consider the following thought: with ESX we are now back in time to the realm of limited resources. There are no longer gobs of memory and disk available for any particular machine, but a realm where memory and disk can be vast; but as more VMs are added, more resources are used. The goal is now to preserve memory. As an example, consider programming the old Commodore 64, where no more than 360K would fit on a single floppy; to go past this, more than one floppy had to be used. Everyone programmed to the 360K limit of the floppy so that code would fit on a single disk. Once another floppy was in use, the applications usage went downhill, performance suffered, and wait time increased. With ESX, we are back in this realm where we need to be cognizant of the limitations of the host, which is trying to do much, much more with less than ever before.
All VMs affect the resource limits of the host and therefore resource management becomes a huge issue (as covered in another chapter). Note, however, that changes to the way resources are used, assigned, and managed can inadvertently affect all VMs on a host or in a farm.
Limiting memory assignment to VMs can allow more VMs to run in a single ESX host without impacting memory or performance limits.