3

I have been trying to understand more in-depth how the resource governor resource pool limits work in conjunction with multiple user defined pools.

I've been trying to follow along the table in this MS doc: Resource Governor Resource Pool

But the formula explanations are a little vague (to my eyes) so I'm trying to make sure I am calculating the effective max and shared % numbers correctly.

Proposed RG Resource Pool Config

The formulas in the comment column are for calculated effective max. Shared % seems fairly straightforward and dependent on the accuracy of the effective max. My questions are as follows:

  1. Do user defined resource pools consider the default pool in their calculations? I assumed they do because the default pool (from the MS example) considers the MIN values of user pools for the default pool calculation.
  2. Is it nonsensical as I believe for the SUM of all calculated shared % to be >100%? The MS examples all fall below 100%.
  3. Could someone please explain this blurb on shared % from the MS docs, I'm not fully understanding what the shared % calculation is supposed to represent:

The shared part of the pool is used to indicate where available resources can go if resources are available. However, when resources are consumed they go to the specified pool and are not shared. This may improve resource utilization in cases where there are no requests in a given pool and the resources configured to the pool can be freed up for other pools.

Lastly, the documentation mentions extreme cases of pool configuration and calls this out:

All pools have zero minimums. All the pools compete for available resources and their final sizes are based on resource consumption in each pool. Other factors such as policies play a role in shaping the final pool size.

Is that an accurate summation of the proposed pool configuration I have screencapped above? Hypothetically, this pool configuration would then allow the server to max out CPU and not meter CPU utilization as I intend, correct?

Thanks for the help.

1 Answer 1

4

Question 1

Do user defined resource pools consider the default pool in their calculations?

Yes, they do. You can verify it by editing the minimum CPU for the default pool and trying to add another pool later that exceeds the sum of 100. If you tried, you should see the error Sum of the minimum CPU percentages must not exceed 100:

Error message regarding Minimum CPU%

Just be careful if you decide to use this pool in production with a configuration different from the default one as it receives all the process that was not specified to another existing pool.

Question 2

Is it nonsensical as I believe for the SUM of all calculated shared % to be >100%? The MS examples all fall below 100%.

There's a difference between the MIN% and the Calculated Shared % concepts regarding the Resource Pool:

  • The MIN% is an amount of CPU that once you define for a pool, it's not gonna be available for any other. So, if you define 5 for Pool B, you only have 95 that can be used for other pools. Those 5 won't be shared. That sum is calculated among all existing pools.
  • The Calculated Shared % is the difference between the MIN% and the MAX% on the same pool, not among all existing pools as above. Pool B was defined with a MAX% of 10, then you have to subtract 5 (the amount it won't share with anyone) from 10 (the max amount of CPU it's supposed to use if available and not required from some other pool).

Question 3

Could someone please explain this blurb on shared % from the MS docs, I'm not fully understanding what the shared % calculation is supposed to represent:

It's related to what I said before: the MIN% value states how much CPU a pool owns and won't borrow to any other pool even if it's not processing anything and the 5% CPU is idle while the whole instance is on peak time consuming 95% and starving for 5% more. Share on the context of that excerpt means the difference between the MIN% and the MAX% of the same pool. That's why Pool C can share 50% and it means that if Pool C was idle, it would release all the CPU it is allowed to use so that other pools can consume it.

1
  • 1
    thanks for the insight! Jul 6, 2022 at 4:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.