...
For any HPE Synergy 480 Gen11 compute modules, any Converged Network Adapters connected to mezzanine slots 1 or 3 may experience low throughput. This issue occurs on mezzanine slots 1 and 3 which are associated with CPU socket 1, due to imbalanced I/O loads between the two CPU sockets. This issue does not occur with mezzanine slot 2 which is associated with CPU socket 2.
In the scenario described above, any HPE Synergy 480 Gen11 compute modules configured with Converged Network Adapters.
To avoid this issue or if this issue has already occurred, perform the following steps: During compute module startup sequence, press F9 to access System Utilities. From the System Utilities menu, select "System Configuration" and then "BIOS/Platform Configuration (RBSU)". Select "Workload Profile". Change the workload profile to "Virtualization Max Performance". Press F12 to save the changes and exit System Utilities. Reboot the compute module and boot into the Operating System (OS). Adjust NUMA node mapping to the values shown below. The steps are OS-dependent. Device NUMA Node Mezzanine1 Port1 3 Mezzanine1 Port2 3 Mezzanine2 Port1 7 Mezzanine2 Port2 6 Mezzanine3 Port1 2 Mezzanine3 Port2 2 For Linux Run the command "numactl --interleave=all <customer application>". Additional information can be found at the link shown below. numactl(8) - Linux man page Disclaimer: One or more of the above links redirects outside the HPE website. HPE is not responsible for content outside of its domain. For VMware vSphere Run the command shown below. esxcli system settings kernel set --setting=maxPCPUsNUMAInterleaving --value=true This command enables the NUMA node setting, which controls whether the NUMA node interleaving is allowed. When set to true, NUMA node interleaving is enabled, which can help improve memory allocation and performance for certain workloads. Conversely, use the command shown below to disable this setting. esxcli system settings kernel set --setting=maxPCPUsNUMAInterleaving --value=false After running the command, rebooting the host is typically required to apply changes. To determine the current status of the NUMA node setting, run the command below. esxcli system settings kernel list -o maxPCPUsNUMAInterleaving For Microsoft Windows The customer will be required to call a Windows API to change the NUMA configuration. An API example showing how to migrate to a multi-group node affinity and hence change the NUMA configuration, is provided below. Prior to using the API, perform the following steps to enable the required registry key: 1. Add the registry key using the powershell command shown below. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NUMA" /v SplitLargeNodes /t REG_DWORD /d 1 2. Reboot the compute module. The changes will persist after the reboot. IMPORTANT: Improper editing of the Windows registry may result in unexpected errors. Backup up the Windows registry before implementing any changes. Example API The example shown below requires the wdm.h header, which is included in the Windows driver kit. // // Resolution using KeQueryNodeActiveAffinity2. // USHORT CurrentIndex; USHORT CurrentNode; USHORT CurrentNodeAffinityCount; USHORT HighestNodeNumber; ULONG MaximumGroupCount; PGROUP_AFFINITY NodeAffinityMasks; ULONG ProcessorIndex; PROCESSOR_NUMBER ProcessorNumber; NTSTATUS Status; MaximumGroupCount = KeQueryMaximumGroupCount(); NodeAffinityMasks = ExAllocatePool2(POOL_FLAG_PAGED, sizeof(GROUP_AFFINITY) * MaximumGroupCount, 'tseT'); if (NodeAffinityMasks == NULL) { return STATUS_NO_MEMORY; } HighestNodeNumber = KeQueryHighestNodeNumber(); for (CurrentNode = 0; CurrentNode <= HighestNodeNumber; CurrentNode += 1) { Status = KeQueryNodeActiveAffinity2(CurrentNode, NodeAffinityMasks, MaximumGroupCount, &CurrentNodeAffinityCount); NT_ASSERT(NT_SUCCESS(Status)); for (CurrentIndex = 0; CurrentIndex < CurrentNodeAffinityCount; CurrentIndex += 1) { CurrentAffinity = &NodeAffinityMasks[CurrentIndex]; while (CurrentAffinity->Mask != 0) { ProcessorNumber.Group = CurrentAffinity.Group; BitScanForward(&ProcessorNumber.Number, CurrentAffinity->Mask); ProcessorIndex = KeGetProcessorIndexFromNumber(&ProcessorNumber); ProcessorNodeContexts[ProcessorIndex] = NodeContexts[CurrentNode]; CurrentAffinity->Mask &= ~((KAFFINITY)1 << ProcessorNumber.Number); } } } Revision History Document Version Release Date Details 3 March 07, 2025 The Resolution section has been updated with the correct syntax command to enable the NUMA node setting for systems running VMware vSphere. 2 January 21, 2025 The Resolution section has been updated with additional information for systems running VMware vSphere. 1 April 03, 2023 Original Document Release.