52 Responses

  1. Duncan Epping (@DuncanYB)
    Duncan Epping (@DuncanYB) at |

    I’ve actually spoke with the engineers about this problem multiple times. We are looking to solve this in a future version. I can’t make any promises or commit to dates, but I assure you that this is being looked at right now.

    Reply
  2. Duncan Epping (@DuncanYB)
    Duncan Epping (@DuncanYB) at |
    Reply
  3. Matt Liebowitz
    Matt Liebowitz at |

    My favorite is the other very common problem of folks using resource pools simply as folders for VMs. I remember one environment that literally had 100+ resource pools, often with just one or two VMs in each, just because they wanted to logically separate them. That’s when you start getting into serious trouble.

    It’s the silly cartoons and graphics that keep me coming back. Nice work Chris.

    Matt

    Reply
  4. Open Tabs–Week ending 2/17/2012
    Open Tabs–Week ending 2/17/2012 at |

    […] best resource pool explanations I’ve seen in a while (it has pancakes & waffles fighting): http://wahlnetwork.com/2012/02/01/understanding-resource-pools-in-vmware-vsphere/How snapshots work on ESX (because it still comes up all the time): […]

  5. mwpreston
    mwpreston at |

    The production/test resource pools exist in quite a few places, and you’re right, it’s a management nightmare! Glad to hear Duncan say that they are at the very least aware and we may see a solution someday. Production/Test is a great way to utilize resource pools but not at the expense of always recalculating shares every single time a VM is powered on or off! Great Post, Great Graphics!

    Reply
  6. Rafael Guedes
    Rafael Guedes at |

    Great job!!!! Thanks from Brazil.

    Reply
  7. Chris
    Chris at |

    Chris, thanks for the great article. Here are my thoughts.

    Handing out parts of absolute capacities like reserved memory in a pool hierarchy makes sense as it is additive. As you pass down the resource pool tree you get given a piece of ‘cake’ and you cut it up and hand it down.
    Handing out proportions doesn’t make sense as it ends up being multiplicative as you go down the tree and it’s hard to know what you have been handed.
    The issue relates to VMWare’s fundamental goals ‘isolation between pools’ and ‘sharing within pool’.
    A better approach would seem to be to make shares ‘flat’ (independent of where they are in the pool hierarchy) and only apply to VMs. Then you could monitor the results at each level in the pool hierarchy and set limits & notifications.
    So for your example, you have 100 VMS, 90 with high(4) and 10 with low(1), so we have a total of 90*4 + 10*1 = 370 shares.
    Each high VM gets 4/370 resources and each low VM gets 1/370 resources.
    Production gets 90*4/370 (97%) resources and DEV/Test VM gets 10*1/370 (3%) resources and if we power on or off or move VMs, then this ratio changes to reflect that.

    Reply
  8. Juan
    Juan at |

    Great article. I just have a comment on the script; what about if I have vApps inside the resource pools?, when I run the script it doesn’t count any VMs inside a vApp so the share calculation is not entirely accurate. Any ideas? thanks.

    Reply
  9. Safely Performing Live Host Maintenance with vSphere DRS | Wahl Network

    […] if you have it enabled. There are many caveats to doing this, especially in environments that use resource pools or leverage another product that relies on resource pools such as VMware vCloud Director. Disabling […]

  10. Garan Keeler
    Garan Keeler at |

    Thanks for the article. I think I understand the concept but I hope I can get a little more clarification on one thing.

    In your example you stated each VM had 1 CPU and 1 GB of RAM. If I had a VM with 4 CPU’s would it need 4x as many shares as a 1 CPU VM?

    I assume the answer to that question would also apply to a VM that had 4GB of RAM as opposed to a VM that had 1 GB of RAM.

    Reply
  11. Label Resource Pools with Per VM Shares Value | Wahl Network

    […] you’ll recall in my post “Understanding Resource Pools in VMware vSphere”, I cover the ideal of creating per VM share values to come up with a total number of shares for an […]

  12. My Top 10 VMware Myths, Failures and Issues | Virten.net

    […] Wahl and Duncan Epping have written great posts about this topic: Understanding Resource Pools in VMware vSphere The Resource Pool Priority-Pie Paradox Resource Pools and […]

  13. Vote For The Top Virtualization Blogs, Win A Cookie! via @ChrisWahl | Wahl Network

    […] Understanding Resource Pools in VMware vSphere […]

  14. VMware Resource Pools Once More | speakvirtual

    […] Understanding Resource Pools in VMware  vSphere – Chris Wahl […]

  15. Preetam
    Preetam at |

    Excellent blog!. Thanks so much for sharing and the script 🙂
    I have one question, when we put 20 VMs in resource pool e.g “Prod” and if those VM’s vary in CPU & Memory e.g. 5 VMs are 1 GB,1 vCPU and 15 VMs are 16 GB and 8 vCPU even there will be significant difference in resource allocation within the resource pool i.e. in Prod resource pool.

    In my case I have number of VM’s where VM’s % share is Zero. It means when contention occurs then these VMs in Prod resource pool won’t get any resources. Is it correct? And this is the reason you recommend using VM level shares?

    Reply
  16. Mohammed Munem
    Mohammed Munem at |

    Thanks for the article Chris. I teach the ICM course and really appreciate explanations such as these, especially the bit about doing the math backward … I expect fewer blank looks from students in my current batch when I delve into resources pools and the Pie Paradox.

    Reply
  17. | Resource Pools are NOT for Everyone
  18. Resource Pools are NOT for Everyone - 1cloudroad.com
  19. Adnan
    Adnan at |

    Hi mate,

    A big thanks for this blog. I have one question for you please.

    What happens to the total number of shares available to the children of a resource pool if a VM is:

    a. Powered off
    b. Removed

    Thanks in advance.

    Reply
  20. Ben
    Ben at |

    Great explanation! Here is another good article, if you want yet another point of view.

    Great work!

    http://wireupdc.com/blog/vmware-cpu-resource-pool-misconfigured/

    Reply
  21. Restrict VM resources - Limits or Shares - Virtxpert

    […] Wahl has a nice looking PowerCLI script here (http://wahlnetwork.com/2012/02/01/understanding-resource-pools-in-vmware-vsphere/) that I want to […]

  22. Your Daily VMware quiz! - Page 7
    Your Daily VMware quiz! - Page 7 at |

    […] items I feel I need a bit of a better understanding for, and came across this for Resource Pools. Understanding Resource Pools in VMware vSphere | Wahl Network This year's (2014) goals: VCP-DCV, VTSP, VCAP-DCV; ITIL; CCNA Blog: […]

  23. Paul Rigby
    Paul Rigby at |

    Great article – rare gem indeed.
    2 Questions;
    Why are the share values for CPU and RAM different by an order of magnitude? if it’s just really about the ratio – even counting from desired entitlements per unit VM – why couldn’t i just put multilply 4:2:1 by the respective VM count for both?

    I saw this wasn’t answered, but are turned off VM’s counted as well?

    Thanks, mid-level here.

    Reply
  24. Paul Rigby
    Paul Rigby at |

    Thank you for the quick response. i think they need to rewrite their explanations in the guide. my best guess is they wanted both the share values for memory and vCPU to be in the 100,000 range.

    Reply
  25. Ramdan Virtual : Episode 16 : VMware Resource Pool – VM Man | VMware ,vsphere esxi ,VMware Course ,VCP Course ,Cloud ,VDI ,Hyperv ,Citrix ,شرح كورسات.
  26. Jim Nickel
    Jim Nickel at |

    Instead of us working backwards, why don’t they change the vSphere Client (and the Web Client) to allow us to enter the PER VM share values and the system calculates the total number of shares required for that Resource Pool.

    It would make much more sense.

    Jim

    Reply
  27. Spinning Gold with the PowerCLI Cookbook - Wahl Network

    […] a fairly robust set method for balancing share allocations and resource pools using some of my older work as a baseline. Don’t worry, he pinged me about it before it made it into the book, but his […]

  28. Resource pools, child pools, and who gets what… | All about virtualization

    […] Additional Resources: Chris Wahl: Understanding Resource Pools in VMware vSphere […]

  29. Louis
    Louis at |

    How does this work with nested resource groups:

    i.e.

    I’d like this to happen in times of contention 70% of the time Prod resource group gets resources 10% of the time Dev resource group gets resources 10% of the time QA resource group gets resources 10% of the time staging resource group gets resources
    So if I arbitrarily say the entire cluster consists of 4000 shares. Then:
    70% of 4000 = 2800 shares for Prod
    10% of 4000 = 400 shares for Dev
    10% of 4000 = 400 shares for QA
    10% of 4000 = 400 shares for Staging

    Now following your method, I have 96 VM’s in production so
    96 * [2800 shares] = 268800 shares for cpu and ram on the production resource pool.

    Now if I was to add two child resource pools named webservers and applications, and I’d like in times of contention that WebServers are favored – how would one set this up?

    Reply
  30. VCAP-DCD Exam Experience | vmroyale.com

    […] dependency mapping and what it should look like when you design them.) RPO, RTO, WRT, MTD…WTH?! Understanding Resource Pools in VMware vSphere VMware vSphere Data Protection Documentation VMware vSphere App HA Documentation Multipathing […]

  31. marco
    marco at |

    EXCELLENT POST.
    Even if quite old, this is the best post i have found about resource pools.
    The question is:
    is there some news in the last esxi 6 or is the mechanism still the same? I saw the Duncan’s post in which he wrote that vmware would have make changes

    Reply
  32. Hasan
    Hasan at |

    Hi Chris,
    I have 16 ESXI with 96 GB of ram each. That means I have 1536(16*96) GB of ram in total in my environment. I have vmware vshpere enterprise plus license. I have implemented DRS in my environment. One of my customer is asking for one VM with 120 of RAM and he is doing animation rendering jobs. And that 120 of RAM will be consumed totally when the vm is working. If I use resource pool then Can I allocated more RAM than I have 96 GB for single ESXi.

    As far my understanding I cannot create a VM with 120 GB of RAM which will consume the whole 120 GB of RAM during rendering task by my customer. Because if I cerate a vm with 120 GB of RAM and this VM will reside in one of the hosts in DRS cluster.
    Please help me whether i am wrong or right.

    /BR
    Hasan

    Reply
  33. Daniel Burtescu
    Daniel Burtescu at |

    Great article, Chris !

    We are considering using NETIOC vm network resource pools in our environment and I was wondering if the constraints you are describing apply also to vm Network resource pools.

    Reply
  34. Ryan Johnston
    Ryan Johnston at |

    I’m going to preface my comment with something to avoid such answers as “Resource Pools are not folders”: I understand what resource pools are and their intended function, I’m looking for a more technical explanation to be able to convince more powerful people than I at my workplace so I’m hoping you can help as my searches have not provided very detailed information anywhere.

    So my question:

    If EVERY resource pool in the cluster has the “Expandable Reservation” and “Unlimited” check boxes checked, why is it bad to use Resource Pools for organization and permissions?

    Reply
    1. Ryan Johnston
      Ryan Johnston at |

      Meant to make this a reply to a comment above, but oh well, hopefully you’ll still see it 🙂

      Reply
  35. Sesaru A.
    Sesaru A. at |

    Hello,

    Nice post, but after reading a lot I’m not sure If your calculation of the CPU shares is accurate. I mean, as you can read in the “vsphere-esxi-vcenter-server-50-resource-management-guide.pdf” from VMware (and also you can check when you create a Resource Pool), the number of shares of a resource pool is always the same when you give them a standard “Hight/Normal/Low” shares. From the page 12 of this document:

    “The following table shows the default CPU and memory share values for a virtual machine. For resource pools, the default CPU and memory share values are the same, but must be multiplied as if the resource pool were a virtual machine with four virtual CPUs and 16 GB of memory.”

    So, for example, all RPs with “Normal” shares will have always 4000 CPU shares and 163840 Memory shares, no matter how many VMS the RP has.

    Latter, as far as I understood, each VM can have a different “Hight/Normal/Low/Custom” shares that are calculated with the 1:2:4 way that you explained, but only applied (I guess) inside the RP itself, and to get the shares that the RP has been granted (what are fixed).

    Everybody links to this article to explain RP and shares, what make me really confuse. If you please can clarify this, I would appreciate.

    Reply
  36. Jose Hernandez
    Jose Hernandez at |

    Sesaru, the calculations are ok. You’re probably getting caught up in the way Chris presents it. Think of it this way:

    You create a Resource Pool with a ‘Normal’ setting. That means the pool has 4000 shares of CPU, the default value as you correctly noted. You now create/powerup 16 VMs with one vCPU each inside it. How many shares have been issued INSIDE the pool? That would be 16000 shares as each VM inside the pool gets a default CPU share value of 1000 per vCPU. If you shutdown 8 of those VMs, the number of shares issued changes to 8000. Remember, it is based on powered on VMs.

    Chris simply took that same concept and applied it the other way by using the VMware default share values for 1vCPU and 1GB vMem against the physical resources of the cluster. The cluster itself is the root resource pool.

    Reply
    1. Jose Hernandez
      Jose Hernandez at |

      What I’m trying to understand is the following, because all the explanations/examples I’ve seen on this use Pools where all the VMs have only 1vCPU and that’s not the reality for 99% of us out here:

      Take your two pools in the article above but instead of a Test pool with ten 1vCPU VMs I instead have nine 1vCPU VMs and one 8vCPU VM.

      How many shares does the 8vCPU VM gets out of the 500 assigned to the pool?
      Is it still unchanged at 50 shares per VM or do the 500 shares now get divided per the number of vCPUs, meaning 27.7 shares for the nine 1vCPU VMs and 222 shares for the 8vCPU VM?

      If the later, does that means I still have an imbalance problem where this 8vCPU Test VM will have more weight that a Production VM with 100 shares if there’s resource contention?

      Reply

Share your point of view!