Please tell me if my line of thinking is off.
Is it possible to add two VM's to a resource pool (all of the server's resources are in this one pool) and have them dynamically use the resources in the pool.
This gets confusing for me because you have to allocate ## of resources to each VM when you create them. On the VM's resouces tab you can specify limits and reservations.
Are these limits and reservations from the resources that I assigned the VM or resources of the pool that the VM is in?
My end goal is to have each server use as many resources it needs during different workload periods. Please let me know if this is clear or not, it seems kind of foggy to me.
It is the default behaviour of ESX architecture.
Create resource pool, leave every thing default. Entire resources will be shared among the VM's
For VM's to dynamically use resources use shares. Give each VM high/low/medium shares based on its requirement.
MLubinski wrote:
Please tell me if my line of thinking is off.
Is it possible to add two VM's to a resource pool (all of the server's resources are in this one pool) and have them dynamically use the resources in the pool.
Yes it is possible. Assign each VM shares based on its requirement e.g. VM1 assign high shares, VM2 Low and VM3 medium. So VM1 will always gets more shares, but this will happen only if there is contention among the VM's in that resource pool
MLubinski wrote:
Are these limits and reservations from the resources that I assigned the VM or resources of the pool that the VM is in?
My end goal is to have each server use as many resources it needs during different workload periods. Please let me know if this is clear or not, it seems kind of foggy to me.
These are pools created out of resources of your Server. e.g. if you have 10,000 GHZ CPU and 32 GB RAM server. Resource pool will have more or less same size, this is pooled from server
In a pool, since they dynamically allocate based on shares %, what effect does the static allocations I have put in during the VM creation?
That is maximum any VM will get. e.g. if you configure 4 GB RAM and 2 GHZ Server. This is maximum it will get. But most of the time server do not use all the resource allocated to them. So in this case shares comes into play
Even though they are in a resource pool the VM will only use (up to a Max) of the resources specified in the VM itself.
Is there a way to tell theVM's (I have 48gigs memory available) you can use all 48 but you must share it if your not using it?
This is just an example as my hosts can only use up to 32gigs per. It sort of seems there should not be an option to specify resources on the VM itself when the VM resides in a pool to truely dynamically use the resources it needs.
It is the default behaviour of ESX architecture.
Create resource pool, leave every thing default. Entire resources will be shared among the VM's
Thanks for all of your help, quickly I must say also.
I apologize for my confusion and newness but to clarify my understanding please let me know if this is correct.
The hypervisor host has a total of 48 gigs of memory.
VM1 is set with 24gigs of memory.
VM2 is set with 12 gigs of memory
this leaves about 12 gigs of memory free (leaving overhead out in this example)
The VM pool is set with all maximum available resources (48 gigs) and both VM's are added to the pool.
If VM2 needs more than 12 gigs it will grab from the pool even though its only allocated 12 in the VM settings?
This situation above seems to make the pool not make sense in my head. Unless you overallocate each vm inside the pool with say 24gigs each. (which I dont think you can do, not sure though)
MLubinski wrote:
I apologize for my confusion and newness but to clarify my understanding please let me know if this is correct.
The hypervisor host has a total of 48 gigs of memory.
VM1 is set with 24gigs of memory.
VM2 is set with 12 gigs of memory
this leaves about 12 gigs of memory free (leaving overhead out in this example)
The VM pool is set with all maximum available resources (48 gigs) and both VM's are added to the pool.
If VM2 needs more than 12 gigs it will grab from the pool even though its only allocated 12 in the VM settings?
This situation above seems to make the pool not make sense in my head. Unless you overallocate each vm inside the pool with say 24gigs each. (which I dont think you can do, not sure though)
Remember memory configured for the vm is the maximum memory it can get. So if your VM needs more than 12 GB you must configure it to the size you expect it to consume. And bottom line is -every thing is shared in virtual infrastructure.
One resource pool on the host hardly makes any sense.Resources are divided at the Resource Pool level first. Each Resource Pool is like a pie whose size determines amount of resources usable (during contention). Then that pie is subdivided among the VMs in the pool. A Resource Pool applies to all its VMs collectively. Thus a smaller pie divided among fewer VMs can yield more resources per VM than a larger pie divided by even more VMs.
Taking your example:-
Host config: - 10000 CPU cycles and 48GB memory.
First Resource pool name - Test1
Config:-5000 CPU cycles and 25GB memory and 4VM powered on.
Per VM cpu cycles = 5000/4 = 1000 cpu cycles.
Second Resource pool name - Test2
Config:- 5000 CPU cycles and 23 GB memory and 10 VM powered on.
Per VM cpu cycles = 5000/10 = 500 cpu cycles
So now you can see it very clearly how the resources are been divided among the VMs.I have taken the example where all the VMs are having normal share but if the VMs are having different shares(like high,normal,low) then in that case the resorces will be divided accordingly inside the resource pool.
HTH