If I create a resource pool with a memory limit of lets say 4GB, I can create and power on a vm inside it with 10GB of ram. Why is that? No matter what I do to the reservation or limit, I can't lock down memory on resource pools.
You need to play with other parameters to prevent such cases. Have a look at the Resource Management guide and look for explanations on Reservation, Admission Control and Expandable Reservation.
But that doesn't make sense. If I have to mess with other things to cap the memory usage on a resource pool then whats the point on having the memory reservation and limit controls on a resource pool??
You should need to tell the system that for this Resource Pool, in case it runs out of resources or it reaches a limit, it shouldn't use its parent's resources. This is managed by the Expandable Reservation property.
Reservation is used to guarantee that a certain amount of a physical resource is dedicated to a VM. The Limit is used to prevent a single VM from using too much a resource. Admission Control checks if a host has enough resources to fulfill all reservations.
Frank is correct.
You must have it set to allow that resource pool borrow resources form the parent. This makes perfect sense why it would allow you to power on that VM with that type of configuration. If you prevent the child from taking unused resources from the parent, then adminission control should prohibit that VM from powering on. Best way to look at that is watch the logs and you should see it taking the resources from the parent.
i think VM won't move to resource pool due to insufficent memory..
first of all a expandable reservation is only used for vm reservations and memory overhead reservations, it has nothing to do with limits.
Even better, a limit overrules a reserveration and that includes expandable reservations.
A limit is a cap of physical resource usage, it does not relate to the memory configuration of a virtual machine.
When you set a limit on a resource pool, you set the limit on the resource pool level. If you place a virtual machine inside the resource pool, the virtual machine becomes the child of the resource pool. It must adhere to the rules of its parent, the resource pool. Because a VM memory configuration does not equal a reservation, you can place a virtual machine with 255GB in it. But it will not use more than 4GB of physical memory. In my example the virtual machine can use up to 4GB of physical memory and will balloon, compress and swap the rest of the 251 GB.
If more virtual machines are placed inside the virtual machine, they will share that limit, based upon their resource entitlement.
co author of: vSphere 4.1 HA and DRS Technical Deepdive - out now on Amazon