Product SiteDocumentation Site

10.11. Changing the Service Offering for a VM

To upgrade or downgrade the level of compute resources available to a virtual machine, you can change the VM's compute offering.
  1. Log in to the CloudStack UI as a user or admin.
  2. In the left navigation, click Instances.
  3. Choose the VM that you want to work with.
  4. (Skip this step if you have enabled dynamic VM scaling; see Section 10.11.1, “CPU and Memory Scaling for Running VMs”.)
    Click the Stop button to stop the VM. StopButton.png: button to stop a VM
  5. Click the Change Service button. ChangeServiceButton.png: button to change the service of a VM
    The Change service dialog box is displayed.
  6. Select the offering you want to apply to the selected VM.
  7. Click OK.

10.11.1. CPU and Memory Scaling for Running VMs

(Supported on VMware and XenServer)
It is not always possible to accurately predict the CPU and RAM requirements when you first deploy a VM. You might need to increase these resources at any time during the life of a VM. You can dynamically modify CPU and RAM levels to scale up these resources for a running VM without incurring any downtime.
Dynamic CPU and RAM scaling can be used in the following cases:
  • User VMs on hosts running VMware and XenServer.
  • System VMs on VMware.
  • VMware Tools or XenServer Tools must be installed on the virtual machine.
  • The new requested CPU and RAM values must be within the constraints allowed by the hypervisor and the VM operating system.
  • New VMs that are created after the installation of CloudStack 4.2 can use the dynamic scaling feature. If you are upgrading from a previous version of CloudStack, your existing VMs created with previous versions will not have the dynamic scaling capability unless you update them using the following procedure.

10.11.2. Updating Existing VMs

If you are upgrading from a previous version of CloudStack, and you want your existing VMs created with previous versions to have the dynamic scaling capability, update the VMs using the following steps:
  1. Make sure the zone-level setting enable.dynamic.scale.vm is set to true. In the left navigation bar of the CloudStack UI, click Infrastructure, then click Zones, click the zone you want, and click the Settings tab.
  2. Install Xen tools (for XenServer hosts) or VMware Tools (for VMware hosts) on each VM if they are not already installed.
  3. Stop the VM.
  4. Click the Edit button.
  5. Click the Dynamically Scalable checkbox.
  6. Click Apply.
  7. Restart the VM.

10.11.3. Configuring Dynamic CPU and RAM Scaling

To configure this feature, use the following new global configuration variables:
  • enable.dynamic.scale.vm: Set to True to enable the feature. By default, the feature is turned off.
  • scale.retry: How many times to attempt the scaling operation. Default = 2.

10.11.4. How to Dynamically Scale CPU and RAM

To modify the CPU and/or RAM capacity of a virtual machine, you need to change the compute offering of the VM to a new compute offering that has the desired CPU and RAM values. You can use the same steps described above in Section 10.11, “Changing the Service Offering for a VM”, but skip the step where you stop the virtual machine. Of course, you might have to create a new compute offering first.
When you submit a dynamic scaling request, the resources will be scaled up on the current host if possible. If the host does not have enough resources, the VM will be live migrated to another host in the same cluster. If there is no host in the cluster that can fulfill the requested level of CPU and RAM, the scaling operation will fail. The VM will continue to run as it was before.

10.11.5. Limitations

  • You can not do dynamic scaling for system VMs on XenServer.
  • CloudStack will not check to be sure that the new CPU and RAM levels are compatible with the OS running on the VM.
  • When scaling memory or CPU for a Linux VM on VMware, you might need to run scripts in addition to the other steps mentioned above. For more information, see Hot adding memory in Linux (1012764) in the VMware Knowledge Base.
  • (VMware) If resources are not available on the current host, scaling up will fail on VMware because of a known issue where CloudStack and vCenter calculate the available capacity differently. For more information, see https://issues.apache.org/jira/browse/CLOUDSTACK-1809.
  • On VMs running Linux 64-bit and Windows 7 32-bit operating systems, if the VM is initially assigned a RAM of less than 3 GB, it can be dynamically scaled up to 3 GB, but not more. This is due to a known issue with these operating systems, which will freeze if an attempt is made to dynamically scale from less than 3 GB to more than 3 GB.