Changing CPU and memory settings on XenServer VMs

You can change the CPU and memory settings of XenServer virtual machines using the API. XenServer allows you to set the priority of the virtual machine CPU (called weight), set a limit on the amount of CPU the virtual machine can use (called cap) and set the amount of memory the virtual machine gets.

CPU priority

You can set the weight parameter to a number between 1 and 65536. The default value is 256, meaning normal priority. A virtual machine with a weight of 512 will get twice as much CPU as a virtual machine with a weight of 256 on a contended XenServer host. The following code sets the weight to 128, meaning that it will get half as much CPU as a normal virtual machine.

Map<String, String> vcpuParameters = new HashMap<String, String>();
vcpuParameters.put("weight", "128");
vm.setVCPUsParams(connection, vcpuParameters);

CPU limit

You can set the cap parameter to a percentage number. The default value is 0, meaning there is no cap. The value 100 represents one virtual CPU, so half a virtual CPU can be set by using the value 50. The following code sets the cap to 35, meaning that it will not get more than 35 percent of one virtual CPU, even if the physical CPU is not used to its top.

Map<String, String> vcpuParameters = new HashMap<String, String>();
vcpuParameters.put("cap", "35");
vm.setVCPUsParams(connection, vcpuParameters);

Memory

You can set the amount of memory assigned to a virtual machine in bytes. The following code sets the amount of memory to 1 GB (1,073,741,824 bytes).

vm.setMemoryStaticMax(connection, new Long(1073741824));
Advertisements
This entry was posted in Cloud computing, programming and tagged , . Bookmark the permalink.

7 Responses to Changing CPU and memory settings on XenServer VMs

  1. Madhurranjan says:

    Good article!!

    Is there a way that the VMs ( lets say Win Server or RHEL) can start up with Xentools.iso ? I want to automate monitoring the IP that the machine gets through DHCP and the VM memory which can be done through Xentools.iso installation but this needs to be separate . I have tried installing xentools and converting it into a template and then instantiating a VM but this process doesn’t work.

    Can this be done through API ?

    Thoughts ?

    Thanks
    Madhurranjan

  2. kongshoubin says:

    Hello, jansipke. I found the following information from the document of XenServer.

    “All writable VM parameter values can be changed while the VM is running, but the new parameters are not
    applied dynamically and will not be applied until the VM is rebooted.”

    Does it mean changing VM settings using comman line?If I change the CPU and memory settings of XenServer virtual machines using the API, do I have to reboot the VM to make the settings work?
    Looking forward to your reply.Please contact with me through email: kongshoubin@gmail.com

    Thank you very much.

    • jansipke says:

      It means that the VM settings can be changed while the VM is running, whether this is through the API or through a command line tool doesn’t matter. However, the changes are only applied after the VM has been rebooted.

  3. Karol says:

    Hi Jan,

    I am using the free version of XenServer. Is it possible to change the amount of memory assigned to a VM afterwards? I tried using XenCenter, but i did not suceed.

    Thanks.

    Karol.

    • jansipke says:

      I am using the free version of XenServer and it is indeed possible to change the amount of memory assigned to a VM after first creation. Just shutdown the VM, change the amount of memory and start again.

      • Karol says:

        Hi Jan,

        I have tried it couple of times but without success. I can assign more memmory, but I can not assign less.

        –K.

      • Karol says:

        Hi Jan,

        I have done some testing and it appears to be overwritten by the VM Template. Even when I try to create a new VM and set less memory, my setting gets overwritten to default 512Mb.

        –K.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s