Recently, I had some customers which could not Quick or Live Migrate their VMs in a Hyper-V Cluster. Although the Cluster Nodes where the same manufacture and type, migration was not possible because the destination server reported a different processor version. Looking into the details with a tool like CPU-Z showed that the CPUs of source and target node are only different in their stepping.
So the question is to determine if I run into this problem before I join machines into a cluster. Obviously Vendor, Family and Model should be identical. If Stepping is differrent, you need to check if the CPU features are identical.
Again, CPU-Z can help. Change to the "About" tab and "Save Report (.TXT) on each host.
Look for an entry CPUID, followed by several lines with hex values. Like below:
CPUID 0x00000000 0x0000000B 0x756E6547 0x6C65746E 0x49656E69 0x00000001 0x000106A5 0x00100800 0x80986381 0xBFCBFBFF....
These Lines are the different CPUID Leaves. For Details, check out http://www.intel.com/Assets/PDF/manual/253666.pdf (Figure 3.6, 3.7)
We are interested in Leave #1, highlighted above: The 3rd and 4th values are the available CPU features (on my test machine 0x80986381 0xBFCBFBFF)
So these two values should be identical on all hosts that you would like to use for Migration. Otherwise, you need to enable “Migrate to a physical computer with a different processor version” on the Processor Tab within each VM setting.
The reason for this is that Hyper-V cannot determine if some application inside the guest actually relies on a specific CPU Feature. If this VM is migrated to a host without this feature, the application may fail. With the feature limited, a zeroed feature set is reported to the guest.
P.S. Meanwhile we released a tool to check if your servers are compatible. Very cool - http://code.msdn.microsoft.com/VMMTestWizard
I've run into this myself. Out of 6 HP Proliant DL380G5 machines bought in a single batch one of them is a different stepping level to the other 5. Luckily for me I have some more machines of the same type and with a bit of rejigging I can match my two clusters' machines levels.
There is an easy way to match the machines without resorting to another application. In a CMD prompt just type SET P and you will find the PROCESSOR_IDENTIFER environment variable has the info required. Here is what I had on my two machines:
*Intel64 Family 6 Model 15 Stepping 6, GenuineIntel
*Intel64 Family 6 Model 23 Stepping 10, GenuineIntel
Whoops, copy and past error. It was actually these two:
*Intel64 Family 6 Model 23 Stepping 6, GenuineIntel
That would mean that you limit yourself to having identical CPUs up to the stepping. However, even different types may actually share the same feature set.
I'd recommend using this tool: