Mastering Windows Server 2016 Hyper-V

(Romina) #1
logical processors  trying  to  wake    at  the same    time    and getting into    contention
with each other. The solution for me was simply to disable the C3 sleep state on
my processors on the Hyper-V host by using the following command:
reg.exe add HKLM\System\CurrentControlSet\Control\Processor /v
Capabilities /t REG_DWORD /d 0x0007e066

Then    I   would   reboot  the server, and my  problem was solved.

Windows Server Hyper-V has another processor-related setting that is set per virtual
machine. This setting is “Migrate to a physical computer with a different processor
version.” It is not possible to migrate a virtual machine between Intel and AMD
processors by using migration technologies, because of the completely different
architecture and instruction sets of the processor. However, by default you also can’t
migrate between servers with different versions of the same processor family.
Although both servers may have Intel processors, the different processors may have
different capabilities, features, and instructions, which is a problem because some
applications perform tests when they start to check the capabilities of the processor. If
an application checks the processor and decides that it has a certain set of instructions
and is then moved using migration technologies to a server with a different processor
that does not support a particular instruction, when the application makes the call, the
application may crash. To resolve this problem, Hyper-V adds the ability to hide many
higher-level functions of processors in the guest operating systems. You can move
guest operating systems between nodes in a cluster even if the processor versions are
different, because the virtual operating systems are exposed only to the generic
instructions that are present in all versions of the processor family. The functionality
does not scan the processors and expose the lowest common set of functionality of all
of the processors in the cluster; it just limits to a generic basic set lower than all of the
processors in the cluster. Do not enable this setting unless you know that you will
need the ability to move between hosts with different versions, because hiding the
instructions of the processor may cause a performance impact to applications and
services that would otherwise use those instructions to improve performance. This
can also be set using PowerShell with the following command:


Set-VMProcessor -CompatibilityForMigrationEnabled $true


The exact instructions that are hidden when this setting is enabled are shown in Table
2.3.


Table 2.3: Process Features Hidden with Processor Compatibility Enabled


INTEL   PROCESSORS AMD  PROCESSORS
SSSE3, SSE4.1, SSE4.2,
POPCNT, Misaligned SSE,
XSAVE, AVX

SSSE3, SSE4.1, SSE4.A, SSE5, POPCNT, LZCNT,


Misaligned  SSE,    AMD 3DNow!, Extended    AMD
3DNow!
Free download pdf