Objective 5.1: Configure Advanced/Multilevel Resource Pools

Back again with a new objective. This time we are going to go over Resource Pools. Over the course of the blog post we will cover the following points.

  • Describe the Resource Pool hierarchy
  • Define the Expandable Reservation parameter
  • Describe vFlash architecture
  • Create/Remove a Resource Pool
  • Configure Resource Pool attributes
  • Add/Remove virtual machines from a Resource Pool
  • Create/Delete vFlash Resource Pool
  • Assign vFlash resources to VMDKs
  • Determine Resource Pool requirements for a given vSphere implementation
  • Evaluate appropriate shares, reservations and limits for a Resource Pool based on virtual machine workloads

So jumping right in…

Describe the Resource Pool hierarchy

Whether you create additional pools or not, you already have a resource pool in your environment. That’s right, your original hosts whether by themselves or in a cluster make up a resource pool. So what is a resource pool? Well the official definition of a resource pool is: A logical abstraction for flexible management of resources. They can be used to partition available CPU and memory resources.

As mentioned before, whether you have a standalone host or DRS cluster, you have a resource pool. EVEN if it doesn’t show in your client. This is your root resource pool. Now you can create additional pools that further partition those resources from there. These are known as child resource pools. Depending on which pool you are talking about in reference to which pool, the relationship is familial. So the upstream pool is known as a Parent Resource pool and the downstream is known as the Child Resource pool. Continuing along in this family thing, if the pools are at the same level, they are known as Sibling Resource pools. A resource pool can contain child resource pools or virtual machines.

Define the Expandable Reservation parameter

So you have gone ahead and partitioned off resources. That’s great and you have officially been heralded as the savior of at least two different departments. The only issue is that one of the departments you have restricted the usage to, was the payroll department. At least occasionally, they may need a bit more resources-to make sure your check goes out on time. Since you don’t necessarily wish to have to answer every email when they need it, you would like a better way to occasionally give them more resources. Enter the expandable reservation check mark. Checking this button allows your resource pool to occasionally grab more resources, if they are available, from the parent resource pool. And once again, the peasants rejoiced.

Describe vFlash architecture

Starting with version 5.5 a new architecture and vFlash setup started being used. This is now vSphere Flash Read Cache. The design is based off a framework made up of two parts:

  • vSphere Flash Read Cache Infrastructure
  • vSphere Flash Read Cache software

This architecture allows for the pooling of multiple Flash-based devices into a single consumable object, called a Virtual Flash Resource. This can be consumed and managed in the same way CPU and memory are done. So how does it work?

The vSphere Flash Read Cache infrastructure becomes the resource manager and broker for the consumption of the Virtual Flash Resources and also enforces admission control policies. The Flash resource is broken into two different pieces. Virtual Flash Host Swap Cache for VMware vSphere Hypervisor and Virtual Flash Read Cache for virtual machines.

The first object is used as one of the memory reclamation techniques. This replaces the previous tool, swap to SSD. The Hypervisor can use up to 4TB available for Swap Cache.

Virtual Flash Cache software is natively built into the hypervisor. This provides a mechanism for the VMs to use SSD directly to enhance the read portion of their operations, without having to modify anything inside the VM. The amount of cache space used is assigned on a per VMDK basis and only consumed when the machine is turned on. vSphere uses a filesystem called VFFS or VMware Flash File System.

Create/Remove a Resource Pool

In order to create a Resource Pool, we will need to:

  1. Navigate to the parent object where we will want to place the resource pool.
  2. Right Click on the object and select New Resource Pool
  3. Now you will need to assign it a name you can also specify how to divvy up the CPU or Memory resources of the parent
  4. Here you see the finished resource pool in native habitat

Kind of looks like a pie chart signifying cutting up a piece of the resources for you. To remove it, just right-click on the resource pool and delete.

Configure Resource Pool attributes

Now I could be really lazy and say to configure the resource pools attributes, just right click and click Edit. But I won’t do that to you. Yes, that is the way to do it. However, you should know what all those things are before you start meddling with them. So here is an explanation of what you will find on that screen:

Shares: This on the surface looks simple enough, right? Shares should equal how many shares of the resource. But it gets a little deeper. It is dependent on the number of shares owned by the parent. If you are inside another resource pool, then you get that many shares of the original shares. Or a fraction. The other thing to keep in mind as well is shares only come into play when there is contention for that resource. So as long as everyone has enough…. Shares don’t matter. You can specify Low, Normal, High, or Custom. Low=2000 shares, Normal=4000, and High=8000. The number doesn’t really matter as it is just based on the overall shares assigned in the pool. Custom allows you to specify any number you want.

Reservation: This specifies a guaranteed CPU or memory allocation for that resource pool. The interesting thing about this is, that regardless if there is a VM inside the pool, the reservation is still in effect.

Expandable Reservation: As mentioned before, if this box is checked, it allows a VM inside the resource pool to borrow resources from the parent pool (if available).

Limit: You can use this to specify an upper limit to this type of resource. Use this sparingly as this will prevent you from starting machines or worse, if you use it unscrupulously.

Add/Remove virtual machines from a Resource Pool

You can move a VM into or out of a resource pool a couple of different ways. The resource management guide from VMware has you right click on the VM and Migrate it. You can also just drag it into it or out of it. That is to me the easier way. Now when you do that you need to be mindful that if you have assigned any shares to the VM, they will change according to the overall number of shares already in the resource pool. Also be mindful of any reservations you have set. If the resource pool can’t support the reservation, it will cause the move to fail. Likewise, moving a machine out of a resource pool will once again redistribute the weight of the shares, as there is a smaller number of overall shares so each one will be worth more.

Create/Delete vFlash Resource Pool

In order to create a vFlash Resource Pool you will need to navigate to a host with SSDs and then click on Manage>Settings>Virtual Flash and then click on Add Capacity. To remove you would click on the Remove All


Assign vFlash resources to VMDKs

To assign vFlash resource to a VMDK you will need to have some to assign (obviously) but then you would go to the VM and edit the settings. Then click on the Hard Drive with the VMDK you wish to add the flash resource to.

When you expand it out you can see Virtual Flash Read Cache with a number specifying how much space you wish to assign to it.

Determine Resource Pool requirements for a given vSphere implementation
Evaluate appropriate shares, reservations and limits for a Resource Pool based on virtual machine workloads

So the above two points are going to be really based on a lot of factors. You should first keep the goals of Resource Management in mind.

  • Performance Isolation: prevent virtual machines from monopolizing resources and guarantee predictable service rates.
  • Efficient Utilization: exploit undercommitted resources and overcommit with graceful degradation.
  • Easy Administration: control the relative importance of virtual machines, provide flexible dynamic partitioning, and meet absolute service-level agreements.

The next thing you will need to do is remember that there is overhead associated with your VM. Sure you may have given that VM 4GB of RAM but it is consuming more than that due to VMware needing to use RAM to manage it. How do you figure out how much you need? You need to go to the VM and then click over to Monitor > Utilization. When you get there, you will see a bunch of line graphs and numbers. What you are looking for here is on the memory and CPU, Worst Case Allocation. This is the absolute worst case scenario that you would need to prepare for.

In my example here, CPU worst case is 3.54 GHz. This is because I have allocated 2 vCPUs to the machine and both of those cores are running at 1.6Ghz. Then add in overhead. With RAM, I am looking at 4.08GB as my worst case scenario. This is the 4GB I have allocated to this box plus overhead needed to manage it. You can also work with Guest Memory to figure out how much memory your workload / app is actually using. Keep these in mind when sizing and working with your resource pools.

Next Up….. Objective 6.1 – Where we talk about Backups / Restores / and Replication