[
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:28 AM:
-----------------------------------------------------------------
Treat the Function Spec
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+scaling+of+CPU+and+RAM
as the source of truther
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):
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
> 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