Share This:

With VMWare resource pools, you can delegate capacity management to other admins.  Resource pools let you think about your ESX cluster as a single unit of resources, without worrying about host boundaries too much.  But they do have their peculiarities, which are a rich source of FAQs.


A frequent list of questions is about the four parameters you can set on resource pools.


The principle is actually straightforward:

  • Limit and Shares: control the growth of VMs, i.e., how much capacity VMs can use.
  • Reservation and Expandable: control admission, i.e., whether new VMs can be powered on or not.


Let's see how this principle works, with some example questions from customers:


Question 1.  I set Expandable = false, Limit = 150GB, Reservation = 150GB.  I already have 2 guests in the pool of allocated size 120GB.  So now, can I power on a new VM of allocated size 50GB?


Answer: No, because the pool has only 30GB of reserved capacity left, and it cannot borrow from its parent.


Question 2. Same as Question 1, but I increase the Limit to 250GB.  Now can I power on a new VM of allocated size 50GB?


Answer: No, because it still cannot borrow from its parent.  The Limit setting has nothing to do with it.  The Limit setting controls how much the existing two VMs can grow, provided their host has enough memory.


Question 3. Same as Question 1, but I set Expandable = true. Now can I turn on a new 50GB VM?


Answer: If the parent pool has at least 20GB of reserved capacity available, then the pool can borrow that on top of its own remaining 30GB reserved capacity, and let the new VM power on.


If you're not doing anything fancy, then here's some advice: just leave Expandable and Limit alone.  Their defaults are true and false respectively.  This lets the pool borrow from its parent if there is capacity, and lets VMs grow if the resources are available.  If you want to make sure a certain business application get preferential treatment, then set Reservation on its pool to a high number.