Issue adding a host to SCVMM when that host has more than 16 processors
It has come to our attention that trying to add a computer with more than 16 processors (for example a quad six-core machine with 24 processors) is crashing the VMM server with the following exception:
09435 00009433 273.19396973 [5684] 1634.16A4::07/22-20:50:29.545#26:VmRefresher.cs(182): System.InvalidOperationException: Nullable object must have a value.
09436 00009434 273.19396973 [5684] at System.Nullable`1.get_Value()
09437 00009435 273.19396973 [5684] at Microsoft.VirtualManager.Engine.Adhc.WindowsHostDataProperties.GetProcessorData()
09438 00009436 273.19396973 [5684] at Microsoft.VirtualManager.Engine.Adhc.WindowsHostDataProperties.PopulateProperties()
Here is an example of 24 processors from the SYSTEMINFO file:
System Model IBM 3850 M2 / x3950 M2
System Type x64-based PC
Processor Intel(R) Xeon(R) CPU E7450 @ 2.40GHz, 2398 Mhz, 6 Core(s), 6 Logical Processor(s)
Processor Intel(R) Xeon(R) CPU E7450 @ 2.40GHz, 2398 Mhz, 6 Core(s), 6 Logical Processor(s)
Processor Intel(R) Xeon(R) CPU E7450 @ 2.40GHz, 2398 Mhz, 6 Core(s), 6 Logical Processor(s)
Processor Intel(R) Xeon(R) CPU E7450 @ 2.40GHz, 2398 Mhz, 6 Core(s), 6 Logical Processor(s)
In the VM Manager log, note the following errors:
Log Name: VM Manager
Source: Virtual Machine Manager
Date: 7/22/2009 2:45:56 PM
Event ID: 19999
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: HOST.CONTOSO.com
Description: Virtual Machine Manager (vmmservice:2516) has encountered an error and needed to exit the process. Windows generated an error report with the following parameters:
Event:VMM20
P1(appName):vmmservice
P2(appVersion):2.0.3444.0
P3(assemblyName):E.Adhc.Operations
P4(assemblyVer):2.0.3454.0
P5(methodName):M.V.E.A.WindowsHostDataProperties.GetProcessorData
P6(exceptionType):System.InvalidOperationException
P7(callstackHash):e9f1Log Name: VM Manager
Source: Virtual Machine Manager
Date: 7/22/2009 2:45:56 PM
Event ID: 1
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: HOST.CONTOSO.com
Description:
System.InvalidOperationException: Nullable object must have a value.
at System.Nullable`1.get_Value()
at Microsoft.VirtualManager.Engine.Adhc.WindowsHostDataProperties.GetProcessorData()
at Microsoft.VirtualManager.Engine.Adhc.WindowsHostDataProperties.PopulateProperties()
at Microsoft.VirtualManager.Engine.Adhc.WindowsHostAbstractionLayer.GetHostProperties(HostData oldHostData)
at Microsoft.VirtualManager.Engine.Adhc.HostRefresher.GatherAllInformation(Host host, Object agentRefreshSyncObj, Guid taskID)
at Microsoft.VirtualManager.Engine.Adhc.HostRefresher.RefreshLockedHost(Host host, Guid taskID)
at Microsoft.VirtualManager.Engine.BitBos.VMRefresherBase.UpdateHostToResponding(Nullable`1& prevState)
at Microsoft.VirtualManager.Engine.BitBos.VMRefresherBase.UpdateHostState(IVMComputerSystemSummary[]& vmComputers, Nullable`1& prevState)
at Microsoft.VirtualManager.Engine.BitBos.VMRefresherBase.RunLightRefresher()
at Microsoft.VirtualManager.Engine.BitBos.VMRefresherBase.UpdateHostandVMs(VMRefresherType refresherType, Guid vmObjectId, VM tempVm)
at Microsoft.VirtualManager.Engine.BitBos.VmLightRefresher.RefreshData(HostReference hostRef)
at Microsoft.VirtualManager.Engine.RefreshDriver`1.RefreshThreadFunction(Object obj)-2146233079
In the 19999 error note the WindowsHostDataProperties.GetProcessorData and System.InvalidOperationException which correspond directly to the exception from the trace. In the 1 error note the Nullable`1 also corresponds directly to the exception from the trace.
This issue is outlined on IBM’s website: https://www-947.ibm.com/systems/support/supportsite.wss/docdisplay?brandind=5000008&lndocid=MIGR-5079202
From a Hyper-V perspective we support up to 24 cores (requires a QFE KB956710). We have a few workarounds for VMM to work in this case (either do #1 or implement #2 and #3)
- You can limit the number of CPUs via msconfig to 16 (we know this solution is not ideal in this case, but wanted to document it anyway)
- Go to BIOS, then navigate to Advanced Setup>Clustering Technology and set it to Physical (default is Logical)
- Use Bcdedit to add USEPHYSICALDESTINATION and set to YES. This forces the physical APIC to be used.