The old problem with Hyper-Threading in Virtual Server 2005, without getting overly technical, is the CPU cache was being poisoned, i.e. it was caching almost nothing because the contexts of what was happening on each thread were unrelated - causing them to compete for the on-chip cache.
Newer chips have larger and smarter caches so this is less of a problem.
Is it ideal to have on or off? That really depends on workload. If both threads happen to be running the same VM and the same task, then it would almost certainly be a BIG advantage to have on. If they were doing unrelated things with a lot of random RAM I/O (several different VMs for example) it would cause only half the chip's cache to be available to each - which in theory could be slower - In reality it rarely is anymore.
If you have older generation chips though you may want to check the chip cache sizes: In virtualization the larger cache you can get the better. RAM truly is MUCH slower than CPUs - just not NEAR as bad as disk drives.
NOTE: What you are reading that says "turn off" was found regarding the chips that were single core with Hyper-Threading - For example this was official answer back in the day (2005/2006?) - http://www.VirtualServerFAQ.com/tiki-index.php?page=VirtualServerHostDualCore
Steve Radich
http://www.VirtualServerFAQ.com
I am having the same issues/problems as Tim Brigham. That you (Grigory) do have the options, does not mean we do have them. Here is the screenshot of the boot options I have in the VM:
Holding down shift doesn't work as you describe either. This does seem to work.
How to change the boot order (NIC first):
I have done some research and it seems that you can only change the boot order for Generation 2 VM's, running on Windows Server 2012 R2 or later, using powershell. I used the following powershell commands to change the boot order:
$VM = Get-VM "VmName"
$network = $VM | Get-VMFirmware |select -ExpandProperty BootOrder | where {$_.FirmwarePath.EndsWith("MAC(000000000000)")}
$VM | Set-VMFirmware -FirstBootDevice $network
Now the VM will boot from the network. Afterwards you probably need/want to change the boot order back to file being the first boot device. You could also choose to keep the network as the first boot device.
Update 15-3-2017
Heads-up warning
Every time you re-image an UEFI machine, an extra 'bootmgfw.efi' will be added to the firmware list. Removing the obsolete bootmgfw files is not a straightforward process; you'll need to use BCDEDIT in the VM itself to clean them up. A guide on how to do this can be found here. When using this guide, be careful not the remove the GUIDs linked to the EFI boot devices
How to change the boot order (File first):
If you have removed the obsolete firmware entries using the guide mentioned above, you can change the boot order back to file being first using the following powershell code:
$VM = Get-VM "VmName"
$file = $VM | Get-VMFirmware |select -ExpandProperty BootOrder | where {$_.FirmwarePath.EndsWith(".efi")}
$VM | Set-VMFirmware -FirstBootDevice $file
Note: I find it weird that the firmware for Gen2 VM's running on windows 2012 R2 and up only show the 'file' option. I am wondering: is this by design or is it a bug?
Best Answer
CentOS 7 currently does not support running on Hyper-V Generation 2 virtual machines, as can be seen here. You have to recreate the VM and specify Generation 1 as the VM type.
Linux Virtual Machines on Hyper-V provides a comprehensive list of which distributions are supported and any limitations associated with them.
For a list of the differences between Gen1 and Gen2 virtual machine, check this page. You'll notice Legacy BIOS is gone in favor of UEFI.