Page tree
Skip to end of metadata
Go to start of metadata

If you are running a platform with nodes with different types of CPU, you may find that live migration between nodes fails under Xen. This is because moving a guest workload from a processor that supports one CPU feature to one that doesn't would result in the guest crashing (as the guest will assume the CPU remains the same throughout its operation), and Xen will thus prevent the migration. 

This is normally not a problem on hypervisors other than Xen, as such hypervisors tend to emulate a fixed type of CPU.

To work around this problem, you can use CPU levelling, which can be used to mask off CPU features that one type of processor might support, but another might not.

You can specify a xen_cpu_id setting using the format set out in the xl.cfg manpage, which is a string beginning with the word 'host' and followed by comma separated CPU flags.

To remove a CPU flag:

  1. Determine the name of the flag you want to remove, by logging onto the node and typing:

    cat /proc/cpuinfo

    and looking at the line starting with the text 'Flags'.

    For instance, you might see the following output:

    flags		: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm nopl pni cx16 popcnt hypervisor lahf_lm svm abm sse4a

    If you wanted to remove the sse4a feature, you would use the flag name sse4a.

    All the flags are documented here.
     

  2. Log in to the console of the cluster control server.
     
  3. Using the editor of your choice, edit the /etc/extility/nodeconfig/nodetemplate.xml file and add the following text:

    <node> 
    	<networks>....leave whatever is in here....</networks> 
    	<hypervisor_data> 
                    <xen_cpu_id>host,example_masked_flag=0,another_masked_flag=0</xen_cpu_id> 
        </hypervisor_data> 
    </node> 

    replacing the text example_masked_flag (etc) with the name of the flag to disable.
     

  4. Perform a software update on each of the nodes. For information on how to do this, see Managing Nodes.
     

  5. Create a virtual machine, start it, and log in to its console.
     
  6. Check that the required CPU flags are disabled using the following command:

    cat /proc/cpuinfo

    Any CPU flags that you have disabled should not appear in the returned results.

  • No labels