I have a cluster set to Ivy Bridge EVC Mode but I just powered up a few old Windows VMs and they are showing lower EVC modes. Why?
Is it not the Cluster that dictates what EVC mode the VM's run?
Or are there other VM specs that need to be satisfied for certain EVC modes? - These VMs have hardware versions are 7 and 8
VMs running on ESXi 6.7 and now also on ESXI 7.0 but still VMs do not have EVC Option.
Same happens even when I powered them off and started them on ESXi 7.0 Hosts.
So why the VM's do not pick up the EVC set at Cluster level?
VMs only update their EVC setting to the cluster EVC specification during power up in the cluster. A VM which has live migrated from another cluster will retain its original setting from the previous cluster, until restarted in the destination cluster. Unless it has a per-VM EVC setting which is an override to cluster settings. Per-VM EVC is for exactly this scenario when the cluster EVC levels of your two clusters are not the same, in which case you can set the Per-VM EVC of VMs that need to live migrate between these clusters to match the lowest EVC level of the clusters involved.
@StephenMollhe's right, from ESXi /vCenter 6.7 onwards has been introduced the possibility to set a specific EVC mode for each single virtual machine but on the condition that the level of compatibility of the latter's hardware corresponds to the minimum version 14 (or higher), otherwise this option, as you have seen, is not available.
Can you please explain how you checked that some of your VMs have a lower EVC mode than the one set at the cluster level?
I could answer you with many words but I think this writing does it much better and is worth reading:
sorry can you state the reason in a few words as still not sure.
Let me repeat the question, why a VM with no EVC set on it (no apparent option to set its EVC), when powered off and moved to a Cluster with EVC Set at Cluster level does not run at the Cluster EVC level?
Because the article I pointed to explains it better than I could.
That said, from my personal experience, if I don't set a specific EVC level for a specific virtual machine then at boot time takes the one set at the cluster level.
Activating a certain EVC level specifically for a virtual machine this is what it is equivalent to writing the CPU feature corresponding to the chosen EVC level in the ".VMX" file and thus they persist regardless of the source/destination cluster (host) EVC settings, otherwise, at startup it assumes the one defined at the cluster level.
To make the idea a little better, an extract from a ".VMX" file with a specific EVC level manually set for one of my virtual machines:
"featMask.vm.cpuid.ABM = "Val:1"
featMask.vm.cpuid.AES = "Val:1"
featMask.vm.cpuid.AVX = "Val:1"
featMask.vm.cpuid.AVX2 = "Val:1"
featMask.vm.cpuid.BMI1 = "Val:1"
featMask.vm.cpuid.BMI2 = "Val:1"
..... and so on".
Now, if you want to see which EVC level is active just check what the entry under "configure" > "VMware EVC" of one of your virtual machines tells you.
Now, you talk about virtual machines with a hardware compatibility level 7 / 8 which obviously prevents you from setting a specific specific EVC level so ideally they "inherit" that of your cluster, but the practical result is also that the interface of the Your vCenter object doesn't show you an unavailable option.