I’ve created a new Virtualization EcoShell PowerPack with only one Script Node and it’s called “CPUID System Information“ which shows the VMHost CPU Info. The inspiration for building this new PowerPack came from VMware’s evangelist Richard Garsthagen who has built the well known Visual Basic Application, VMware CPU Host Info. “CPUID System Information” is completely based on PowerShell and VMware’s PowerCLI. The script is able to show you which features (CPUIDs) are available on your ESX server’s CPUs. Besides checking VMotion compatibility it also shows you:
Enhanced VMotion Compatibility (EVC) levels which simplifies VMotion compatibility issues across CPU generations. EVC automatically configures server CPUs with Intel FlexMigration or AMD-V Extended Migration technologies to be compatible with older servers.
All the important CPU features like: VMX, MONITOR/MWAIT , SSE3, SSSE3 ,SSE4.1 ,SSE4.2 ,CMPXCHG8B ,CMPXCHG16B ,NX/XD ,Long mode support ,RDTSCP ,3DNow! ,3DNow! Extensions ,FFXSR ,Prefetch instructions.
I’ve three versions available for download.
The first one can be used as a PowerPack in the Virtualization EcoShell.
http://www.ntpro.nl/blog/uploads/NTPRO.NL.powerpack
The second one is a stand-alone version of the PowerShell script which can be used without the Virtualization EcoShell.
http://www.ntpro.nl/blog/uploads/CPUID%20System%20Information.ps1
Host : esx4-l.ntpro.local
Cluster : BusterCluster
CPU : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
Current EVCModeKey : intel-penryn
Max EVCModeKey : intel-penryn
VMX : 1
MONITOR/MWAIT : 1
SSE3 : 1
SSSE3 : 1
SSE4.1 : 1
SSE4.2 : 0
CMPXCHG8B : 0
CMPXCHG16B : 1
NX/XD : 1
Long mode support : 1
RDTSCP : 0
3DNow! : 0
3DNow! Extensions : 0
FFXSR : 0
Prefetch instructions : 0
The third one is the developer edition which I’ve used to capture the complete CPU levels and can be used for individual bit testing.
http://www.ntpro.nl/blog/uploads/VMHost-Info.ps1
Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
Level 0
0000:0000:0000:0000:0000:0000:0000:1101
0111:0101:0110:1110:0110:0101:0100:0111
0110:1100:0110:0101:0111:0100:0110:1110
0100:1001:0110:0101:0110:1110:0110:1001
Level 1
0000:0000:0000:0001:0000:0110:0111:1010
0000:0000:0000:0100:0000:1000:0000:0000
0000:0100:0000:1000:1110:0011:1111:1101
1011:1111:1110:1011:1111:1011:1111:1111
VMX
MONITOR/MWAIT
SSE3
SSSE3
SSE4.1
CMPXCHG16B
Level -2147483648
1000:0000:0000:0000:0000:0000:0000:1000
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0000
Level -2147483647
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0001
0010:0000:0001:0000:0000:1000:0000:0000
NX/XD
Long mode support
Level -2147483640
0000:0000:0000:0000:0011:0000:0010:0100
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0000
Here’s a list of links I’ve used to figure out all the CPUID bits:
http://www.tortall.net/projects/yasm/manual/html/arch-x86-modes.html
http://blog.incase.de/index.php/cpu-feature-flags-and-their-meanings/
http://www.da-cha.jp/files/cpuid.htm
http://en.wikipedia.org/wiki/CPUID
http://www.paradicesoftware.com/specs/cpuid/
http://www.sandpile.org/ia32/cpuid.htm
http://www.docstoc.com/docs/4758550/Understanding-CPU-Compatibility-Constraints-for-VMware-VMotion
http://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.host.CpuPackage.html
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1993
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1991