VMware Cloud Community
pryingeyes
Contributor
Contributor

Resource Pool Discussions

I wanted to ask a few questions about Resource Pools, because as I dive deeper into the topic of Resource Pools, I can see there is some risk in their misuse (risks we cannot afford to be wrong about). BTW. I have read the Resource Pool Guide, and while it is a decent guide, it doesn't clarify everything for me.

Question 1: If I create a resource pool, is that resource pool a child of the system default resource pool? Or, is it adjacent to the system default resource pool? This probably matters in terms of whether you defined it as Fixed, or Expandable. If you create a Pool and make it Expandable, then resources it isn't using are available to the parent pool as I understand it. If you make it Fixed, you can waste idle resources that the pool you just created isn't using. Do I have this correct?

Question 2: There's a lot of folks who seem to be saying, "why use Pools at all - why not just put everything in a default resource pool, and add vCPU when you need it to the VMs that need more prioritization?". Since shares are added multiplicative to the number of vCPU, I am not really sure whether this strategy makes sense, or not. Does it, in fact, make sense to just ditch pools, and just throw vCPU at VMs that need or want cycles in a contentious scenario?

Here is an example I am facing:

  • I have one VOIP pool, which has 60 VMs in it, and those VMs need priority in contentious situations. They're doing VOIP, so we don't want jitter, latency, et al. on these VMs. But - not all 60 in that pool are being used for that purpose, only maybe 4-8 of them are "serving traffic".
  • I have another APPSVR pool, which has 4 VMs in it, and those VMs also need priority in contentious situations.
  • I have a third pool, which has 20 or so NSX-T Edge Node VMs in it, and those also are pretty important.
  • I have a fourth pool, which is used for booting up new VMs and tire kicking, and I presume I can make that pool set to Low.

Q. If I create 4 pools, I really have 5 pools, right? And 4 of them are a child pool to the parent pool (default pool)?

Q. If I create 4 pools, and one pool has 60 high priority VMs, and its peer pool has just 4 VMs, then the pool with 4 VMs is at a huge advantage in a contentious scenario, am I right? Because the system has been carved up into 4 slices and once slice is used for 4 VMs versus the other slice, which is divvied up between 60 VMs?

Q. Are these calculations right?

  • If I set the Edge Pool to normal (20 VMs, each with 8 vCPU x 4000 shares), we get 320,000 shares.
  • If I set the VOIP pool to normal, I get (((40 x 8vCPU + (20 x 2vCPU)) x 2000 shares), we get 720,000 shares.
  • If I set the APPSVR pool to normal, I get (4 VMs x 8vCPU x 2000 shares), we get 64,000 shares

Looks like the APPSVR pool gets screwed in a contention situation, all things being equal. So if we make it high on APPSVR, we get:
4 VMs x 8vCPU x 4000 shares = 128,000. Does this even move the needle, and make a difference, if the other two normal pools have a million shares between them? We would only have 1/10th of the shares, which would hurt these VMs. It looks to me, like the VMs in APPSVR pool, might be better off in the VOIP pool - because that pool, because it has more shares, would help those 4 VMs.

But - maybe I don't understand this allocation and scheduling quite right. There seems to be quite a bit of mystery to it. But, I do want to make sure I do this right, and optimize properly. Any help would be greatly appreciated.

 

Labels (4)
0 Kudos
2 Replies
pryingeyes
Contributor
Contributor

no interest? no replies? 🤔

0 Kudos
legoabraham
Contributor
Contributor


Question 1: If I create a resource pool, is that resource pool a child of the system default resource pool? Or, is it adjacent to the system default resource pool? This probably matters in terms of whether you defined it as Fixed, or Expandable. If you create a Pool and make it Expandable, then resources it isn't using are available to the parent pool as I understand it. If you make it Fixed, you can waste idle resources that the pool you just created isn't using. Do I have this correct?


It is a child of the default resource pool.  Any object not under a Resource Pool you created is a sibling inside the root resource pool.

Question 2: There's a lot of folks who seem to be saying, "why use Pools at all - why not just put everything in a default resource pool, and add vCPU when you need it to the VMs that need more prioritization?". Since shares are added multiplicative to the number of vCPU, I am not really sure whether this strategy makes sense, or not. Does it, in fact, make sense to just ditch pools, and just throw vCPU at VMs that need or want cycles in a contentious scenario?

That might not be the best scenario, if you are worried about priority without using pools you should focus on modifying the share value instead and not increasing capacity to just get the same result. Also, avoiding improperly sized VMs this way can lead to other types of issues.  Contention will only happen if the host runs out of resources and at that point having the extra overhead can do more damage. It is always better to right-size your VMs and prioritize using shares.  You do not need to use pools to change.

Q. If I create 4 pools, I really have 5 pools, right? And 4 of them are a child pool to the parent pool (default pool)?


yes, that is correct.

Q. If I create 4 pools, and one pool has 60 high priority VMs, and its peer pool has just 4 VMs, then the pool with 4 VMs is at a huge advantage in a contentious scenario, am I right? Because the system has been carved up into 4 slices and once slice is used for 4 VMs versus the other slice, which is divvied up between 60 VMs?


That is the right assumption if you are not using the "Scalable shares" option in version 7.  Make sure this option is enabled on the parent pool you want to avoid this scenario on and the share value applied to the VMs will be proportionate to the root resources and not the pool they reside on.  In your case, it would be under DRS cluster settings.  

 

I hope this helps.  The picture starts getting a lot more complicated if you start going down the limit and reservation path.  Just configuring shares is more straightforward.

 

0 Kudos