jonb157
Enthusiast
Enthusiast

Resource Pools and design

Jump to solution

For the first time, I've started using Resource Pools. I used to just manage the VM's and their resource settings under the cluster view. For example, I would put a 4GB memory hard limit on a VM, set the "reservation" to 1GB and the "Limit" to 4GB and pretty much use this method for all VM's. I also would leave "shares" all at normal. Well, now my environment in spread out into 4 Resource Pools which I've given 16GB of memory limits. Under those four resource pools, I have VM's. The question is: should I be setting reservation and limit settings UNDER the resource pools for each VM or is this counterproductive? Should I just be putting reservations and limits on the pools themselves and leaving the VM's alone. thanks for future help and insight. If anyone knows a good best practice guide for resource pools also, I would appreciate it(other than the VmWare .pdf manual for VI3)

0 Kudos
1 Solution

Accepted Solutions
RussH
Enthusiast
Enthusiast

Also worth bearing in mind the impact on HA setting reservations at VMs will have. The HA algorithm in 3.0x works out the capacity of each host by taking the largest VM reservation in the cluster and determining how many it can 'slot' into each host. It would only take one large VM reservation to skew the HA failover capacity calculation.

I would go with setting the reservations on pools.

View solution in original post

0 Kudos
6 Replies
Rob_Bohmann1
Expert
Expert

I tend to try and keep things as simple as possible. If you environment is small and there is a few hosts and a relatively small number of vms, and you know there behavior characteristics and resource needs then I would go ahead and feel confident about "fine-tuning" the environment with individual vm settings, shares, reservations and limits under the resource pool. Otherwise, I would let the scheduler manage it.

Are you seeing performance issues with individual vms or high resource utilization on the hosts? Is there evidence of contention? If you are running out of resources and you want to give relative priority within a resource pool, you can either do individual reservations, shares, and limits on the vm or set up child resource pools. I have not had to do either except in a few exceptions where we had some high resource using vm's and it was more about trying to insure Qos and prevent problems for just a handful or servers out of a couple hundred that were in a cluster. I used reservations and shares to accomplish what I needed.

If you have an environment that is frequently changing and growing, where you are not familiar with the behavior and resource needs of your servers, then I would tend to use the Resource Pools to set limitations and reservations, moving individual vms between them to maintain balance and Qos.

We use 3 levels of resource pools for example, low, medium, high, read dev/test, prod, and gold - those systems that we want to insure Qos as much as possible for. Each higher level of resource pools have twice as many shares as the one lower. Roughly 14%, 28%, + 57%.

Remember that shares only come into play when there is contention for resources. (CPU, MEM)

jonb157
Enthusiast
Enthusiast

Well, I'm not really seeing contention, but the problem is that this client has allocated waaay too much memory to individual VM's and we are in the process of adjusting to get better "bang for the buck". So, are you saying to just set the limits and reservations on the pools themselves and don't mess with those settings on the VM themselves? I tend to agree with you, if that's what your saying. By fine tuning too much, I could hinder a VM from memory sharing within that pool and across the hosts, correct?

0 Kudos
Rob_Bohmann1
Expert
Expert

Yes I would stay away from individual vm settings until you see a specific need for them. If you run into contention or performance problems later, it makes it more complicated to see where the problem is.

0 Kudos
RussH
Enthusiast
Enthusiast

Also worth bearing in mind the impact on HA setting reservations at VMs will have. The HA algorithm in 3.0x works out the capacity of each host by taking the largest VM reservation in the cluster and determining how many it can 'slot' into each host. It would only take one large VM reservation to skew the HA failover capacity calculation.

I would go with setting the reservations on pools.

View solution in original post

0 Kudos
jonb157
Enthusiast
Enthusiast

What is the typical amounts you calculate for limit and reservation for Resource Pools? Let's say I have 4 resource pools with 25% on each for CPU & memory. What kind of calculation do I use for setting the reservation for memory on the pool itself? Do I leave the limit to "unlimited" or do i provide a hard amount for that field? So what I've done so far is setup 4 pools, set the % shares to 25% each; each are expandable reservation pools. However some pools are more important than others, so I've set the limit different for memory on each pool. Do I calculate half of that and make that, the reservation amount? sorry, I'm a bit confused.

0 Kudos
RussH
Enthusiast
Enthusiast

Theres no hard and fast rules, I guess everyones implementation is different. My advice would be only to set reservations and limits where absolutely necessary. If you total up the memory requiremetns of the VMs you are planning to host, is the physical memory in the servers likely to be overcomitted? If not - I dont really see setting memory limits and reservations will neccessarily help, a VM will never use more memory than it is configured with. Putting a limit on CPU for dev/test resource pools maybe a good idea.

My advice would be to start with using the Shares value to ensure that high-value, critical resource pools get the the lions share of resources and see how things work out for you.

Again - YMMV.

Cheers

-


If any of this helps - please consider awarding points!