We're Hiring!
Take the next step in your career and work on diverse technology projects with cross-functional teams.
Mountain West Farm Bureau Insurance
office workers empowered by business technology solutions

Tips to Manage Resource Pools in Your VMware Cloud

Last updated:
No items found.
VMware resource pool examples. Source: VMware

Resource pools in VMware powered clouds are one way to manage all available server resources and divide them among your virtual machines (VMs). They are essentially folders for your VMs that direct the server to allocate a certain amount of resources to a specified group of VMs in a hierarchy.

Resource pools are generally used to prioritize certain VMs over others, for reselling resources outside of your organization, and for isolating groups of VMs within performance standards, like when setting up a pool for Testing and Development vs. Production. Access controls are another reason to use resource pools – administrators can delegate a single pool of resources to a team member based on permissions.

Here are some tips to help you efficiently manage the CPU and memory allocated to your cloud servers.


Each resource pool can be defined by reservation, limit, shares, and expendability. Each pool can also have child pools underneath it that are further subdivided. All pools then contain VMs. Resource pools require Distributed Resource Scheduler (DRS), which is only available with certain license levels.

Creating a resource pool in vSphere Web Client

In the main navigator view of vSphere Web Client, select a host, resource pool, or a DRS cluster, then right click and choose All vCenter Actions > New Resource Pool. Pick a descriptive (or maybe funny, for this test run) name and then specify your shares, reservation, expandable reservation, and limit.

Shares are how you define priority for the resource pool. Typical share values are 2:4:1, where the values correspond to a Normal, High, and Low priority, but you can also set custom share values. When resources are not enough to cover all of your virtual machines, these settings will determine where to allocate them.

Limits are, as you might suspect, the maximum amount of each resource that can be used by the pool. Servers will never allocate more than the limit to a single virtual machine, so if you set the memory limit to 2GB, each VM in that resource pool can only have a maximum of 2GB of memory at a time.

Reservations are the opposite of limits in that they are the baseline resource assigned to each VM. A resource pool with a reservation limit of 8GB of RAM will split that 8 GB among all VMs within that pool, VM1 might have 1GB, VM2 might have 0.5GB, and VM3 might have 3GB, leaving 3.5GB for a fourth virtual machine.


Don’t use resource pools simply as folders

Resource pools should be used to allow greater performance to specific VM groups, not simply to logically separate your virtual machines. A better way is to label and sort them using folders. Right click a parent object and select All vCenter Actions, then either New Host and Cluster Folder, New Network Folder, New Storage Folder, or New VM and Template Folder. You can also place folders within folders. Move objects into your folder by right clicking and selecting Move To.


Be careful using shares to prioritize

Going back to our test/dev and production example, if you want to prioritize your production servers using shares, you must take into account the number of virtual machines within the resource pool. If you have more production servers than test servers, even with more resources allocated to the production pool, the test servers might end up with more CPU shares.

That sounds strange, but doing the math reveals why. Let’s say you have 100 VMs in production and 50 VMs in test/dev. You set the shares to 70% of CPU for Production and 40% for test/dev. If you’re splitting 100 CPU cores between them, then each VM in production gets 0.7 cores, while each VM in test/dev gets 0.8 cores.

If you change the number of VMs in your resource pools, you’ll need to adjust the shares to maintain performance levels according to these ratios. To edit resource pool settings, select it, click the Manage tab, and click Settings.


When adding a VM to a resource pool, the system will check to make sure the resource pool has enough resources. When configuring a pool, you’ll choose from either Fixed or Expandable reservation types to configure this check.

With Fixed, the system allows the operation or denies it based on whether there are enough enreserved resources.

With Expandable, which is the default setting, the system looks at the pool and its parent pool as well. If the parent pool has Expandable Reservation enabled, it can donate resources to the children resource pools beneath it. Be sure you do not end up overprovisioning in this case, and remember that even with Expandable selected, the system will never exceed the Reservation and Limit settings you have configured.


Still need help with resource pools or organizing your VMs and resources for top performance? A managed cloud solution will keep your applications available and in tip-top performance.

Recent Blog Posts

lunavi logo alternate white and yellow
Business Intelligence: The Present and Future with Director of Data Analytics, Jeff Thomas

Join us as we dive into the world of data analytics with our very own, Jeff Thomas. With 18 years of experience in this field, Jeff shared valuable knowledge and insight on the current trends of data analytics and where he believes the field is headed. We also discussed the challenges and barriers that enterprises face when implementing data analytics practices, Jeff explains how to rise above these challenges and use data to your competitive advantage.

Learn more
lunavi logo alternate white and yellow
Service Changes Coming to Microsoft 365 & Office 365

The NCE offers new subscription terms including 12-month and 36-month plans priced lower than monthly contracts. In addition, it is easier to add seats, cancellation policies are more consistent, and there are two promotional options to lock in a better rate for your current renewal. However, the mandatory new plans do include price adjustments.

Learn more
lunavi logo alternate white and yellow
Automate Your Cloud with Azure Bicep

Azure Bicep is a great way to implement Infrastructure as a Code to automate the provisioning of Azure resources. In this post, I’ll get you started by describing how Bicep language works as well as key differences and similarities between Bicep and ARM Templates.

Learn more