[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-2503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13700547#comment-13700547
 ] 

Nitin Mehta edited comment on CLOUDSTACK-2503 at 7/5/13 9:26 AM:
-----------------------------------------------------------------

Xenserver /Vmware Tools
For dynamic scaling to work virtual machine should have XS tools / VMware tools 
installed on it. To ensure this Admin/User can do it in two ways :-

Admin/User while registering the template provides an input whether tools are 
installed on the template(or can be done using update template API).
If the user deploys a virtual machine with a template that does not have XS 
tools / VMware tools and later if he/she installs the tools on the VM then he 
can inform Cloudstack using using updatevirtualmachine API. After installation 
of tools and updating the virtual machine, user needs to stop and start the vm 
from cloudstack in order for dynamic scaling of CPU and RAM for that VM. The 
reason why we need to stop start the VM after updating is we need to set static 
max memory to some higher value before VM starts so that we can dynamically 
scale the VM upto static max.
Hypervisor Changes
Xenserver
 To facilitate scaling up RAM for the VMs in xenserver Dynamic Memory 
Control(DMC) to change the amount of host physical memory assigned to any 
running virtual machine without rebooting it.

During the deployment of VM, if we set memory-dynamic-min = memory-dynamic-max 
= requested RAM(say K) then the guest VM gets K amount of RAM, later we can 
increase the RAM by setting a higher value then K within the memory static 
range.

Note : From XS following are the constraints (read xenserver admin guide) 

0 ≤ memory-static-min ≤ memory-dynamic-min ≤ memory-dynamic-max ≤ 
memory-static-max  
Dynamic Minimum ≥ 1⁄4 Static Maximum for all supported operating systems
DeployVmCmd - 

During the initial deployment of the VM we set memory variable as follows :-

static min = service_offering / memory_overprovisioning_of_cluster.  
dynamic min = service_offering / memory_overprovisioning_of_cluster.  
dynamic max = service_offering  
static max = f_min( (4 * service_offering) / memory_overprovisioning_of_cluster 
 ,  Xenserver recommended max for guestOS)
ScaleVmCmd - 

During scaling up of vm, the new requested RAM is set to mem-dynamic-min and 
mem-dynamic-max. Static min and max do not change unless the vm is stopped and 
started.

While scaling "up" the vm say from service offering "x" to "y" we will change  

dynamic min = new service_offering / memory_overprovisioning_of_cluster.  
dynamic max = new service_offering  
and ensure that

new dynamic max (y) <= static max and  
new dynamic min (y / memory_overprovisioning_of_cluster) >= static min.
Further reading 

Vmware -
DeployVmCmd - 
During the initial deployment of the VM we enable the flags hotAddCpu and 
hotAdd memory true. These flags will be turned on if the guest OS supports it. 
Read 
http://partnerweb.vmware.com/comp_guide2/pdf/VMware_GOS_Compatibility_Guide.pdf

ScaleVmCmd - 

During scaling up of vm, the new requested RAM and CPU are set if the flags are 
turned on.

Limitation - 1 - After dynamically scaling memory user "might" need to run a 
couple of commands on Linux OS for new memory to take affect --> Further Reading

Limitation - 2 - If a VM is initially assigned a RAM of less than 3gb then it 
cannot be dynamically scaled beyond 3gb. Holds true for for Linux 64 bit and 
windows 7 32 bit guest os. Further Reading

Limitation - 3 - Hot add vcpu will fail If the number of cores per socket is 
not 1 and virtual machine hardware version=7. Further Reading 
                
      was (Author: nitinme):
    The Functional Spec 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+scaling+of+CPU+and+RAM
 is upto date and should be taken as source of truth. I am copying HV specific 
information which should be documented.

Xenserver /Vmware Tools
For dynamic scaling to work virtual machine should have XS tools / VMware tools 
installed on it. To ensure this Admin/User can do it in two ways :-

Admin/User while registering the template provides an input whether tools are 
installed on the template(or can be done using update template API).
If the user deploys a virtual machine with a template that does not have XS 
tools / VMware tools and later if he/she installs the tools on the VM then he 
can inform Cloudstack using using updatevirtualmachine API. After installation 
of tools and updating the virtual machine, user needs to stop and start the vm 
from cloudstack in order for dynamic scaling of CPU and RAM for that VM. The 
reason why we need to stop start the VM after updating is we need to set static 
max memory to some higher value before VM starts so that we can dynamically 
scale the VM upto static max.
Hypervisor Changes
Xenserver

 To facilitate scaling up RAM for the VMs in xenserver Dynamic Memory 
Control(DMC) to change the amount of host physical memory assigned to any 
running virtual machine without rebooting it.

During the deployment of VM, if we set memory-dynamic-min = memory-dynamic-max 
= requested RAM(say K) then the guest VM gets K amount of RAM, later we can 
increase the RAM by setting a higher value then K within the memory static 
range.

Note : From XS following are the constraints (read xenserver admin guide) 

0 ≤ memory-static-min ≤ memory-dynamic-min ≤ memory-dynamic-max ≤ 
memory-static-max  
Dynamic Minimum ≥ 1⁄4 Static Maximum for all supported operating systems
DeployVmCmd - 

During the initial deployment of the VM we set memory variable as follows :-

static min = service_offering / memory_overprovisioning_of_cluster.  
dynamic min = service_offering / memory_overprovisioning_of_cluster.  
dynamic max = service_offering  
static max = f_min( (4 * service_offering) / memory_overprovisioning_of_cluster 
 ,  Xenserver recommended max for guestOS)
ScaleVmCmd - 

During scaling up of vm, the new requested RAM is set to mem-dynamic-min and 
mem-dynamic-max. Static min and max do not change unless the vm is stopped and 
started.

While scaling "up" the vm say from service offering "x" to "y" we will change  

dynamic min = new service_offering / memory_overprovisioning_of_cluster.  
dynamic max = new service_offering  
and ensure that

new dynamic max (y) <= static max and  
new dynamic min (y / memory_overprovisioning_of_cluster) >= static min.
Vmware -
DeployVmCmd - 

During the initial deployment of the VM we enable the flags hotAddCpu and 
hotAdd memory true. These flags will be turned on if the guest OS supports it.

ScaleVmCmd - 

During scaling up of vm, the new requested RAM and CPU are set if the flags are 
turned on.
                  
> Scalevm - Document/Enforce scale vm limitations for guest OS and hypervisors 
> clearly
> ------------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-2503
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-2503
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Doc, Management Server
>            Reporter: Nitin Mehta
>


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to