Skip to content

Commit 070d6ed

Browse files
committed
Revise wording for NUMA node count
1 parent 7a626ec commit 070d6ed

1 file changed

Lines changed: 50 additions & 43 deletions

File tree

docs/sql-server/compute-capacity-limits-by-edition-of-sql-server.md

Lines changed: 50 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ title: Compute capacity limits by edition of SQL Server
33
description: This article discusses compute capacity limits for SQL Server 2019 and how they differ in physical and virtualized environments with simultaneous multithreading (SMT) processors.
44
author: MikeRayMSFT
55
ms.author: mikeray
6-
ms.reviewer: randolphwest
7-
ms.date: 07/09/2024
6+
ms.reviewer: randolphwest, derekw
7+
ms.date: 07/30/2024
88
ms.service: sql
99
ms.subservice: release-landing
1010
ms.topic: conceptual
@@ -60,57 +60,31 @@ The following definitions apply to the terms used in this article:
6060

6161
- A physical processor can consist of one or more cores. A physical processor is the same as a processor package or a socket.
6262

63-
## <a id="numa-64"></a> Breaking change in SQL Server 2022 Cumulative Update 11
63+
<a id="numa-64"></a>
6464

65-
[!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] limits the number of logical processors per NUMA node to 64. On servers with more than 64 logical processors per NUMA node, you can use a BIOS / firmware configuration to change the number of NUMA nodes per physical socket presented to the operating system, to limit to a maximum of 64 logical processors.
65+
<a id="breaking-change-in-sql-server-2022-cumulative-update-11"></a>
6666

67-
You can consider reducing the number of logical cores per NUMA node. For more information, see [Reduce logical core count per NUMA node](#reduce-logical-core-count-per-numa-node).
67+
<a id="reduce-logical-core-count-per-numa-node"></a>
6868

69-
## Remarks
70-
71-
Systems with more than one physical processor or systems with physical processors that have multiple cores and/or SMT enable the operating system to execute multiple tasks simultaneously. Each thread of execution appears as a logical processor. For example, if your computer has two quad-core processors with SMT enabled and two threads per core, you have 16 logical processors: 2 processors x 4 cores per processor x 2 threads per core. It's worth noting that:
72-
73-
- The compute capacity of a logical processor from a single thread of an SMT core is less than the compute capacity of a logical processor from that same core with SMT disabled.
69+
## Limit number of logical cores per NUMA node to 64
7470

75-
- The compute capacity of the two logical processors in the SMT core is greater than the compute capacity of the same core with SMT disabled.
71+
You can experience issues such as stack dumps on servers with more than 64 logical processors per NUMA node. A BIOS or firmware configuration can reduce the logical core count to a maximum of 64 logical processors per NUMA node, presented to the operating system.
7672

77-
Each edition of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] has two compute capacity limits:
73+
> [!CAUTION]
74+
> [!INCLUDE [sssql22-md](../includes/sssql22-md.md)] Cumulative Update 11 introduced a breaking change, where the [!INCLUDE [ssde-md](../includes/ssde-md.md)] doesn't start if it detects more than 64 logical cores per NUMA node.
7875
79-
- A maximum number of sockets (or physical processors or processor packages)
76+
You can reduce the logical core count per NUMA node in an [Azure Virtual Machine](#disable-smt-in-an-azure-virtual-machine), by disabling SMT. For [bare-metal](#reduce-logical-core-count-on-bare-metal-instances) [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] instances, you can reduce the logical core count with sub-NUMA clustering (SNC) or Nodes per Socket (NPS) options.
8077

81-
- A maximum number of cores as reported by the operating system
78+
<a id="disable-smt-in-a-virtual-machine"></a>
8279

83-
These limits apply to a single instance of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)]. They represent the maximum compute capacity that a single instance uses. They don't constrain the server where the instance might be deployed. In fact, deploying multiple instances of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] on the same physical server is an efficient way to use the compute capacity of a physical server with more sockets and/or cores than the capacity limits allow.
80+
### Disable SMT in an Azure Virtual Machine
8481

85-
The following table specifies the compute capacity limits for a single instance of each edition of [!INCLUDE [ssnoversion](../includes/ssnoversion-md.md)]:
86-
87-
| [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] edition | Maximum compute capacity for a single instance ([!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] [!INCLUDE [ssDE](../includes/ssde-md.md)]) | Maximum compute capacity for a single instance (AS, RS) |
88-
| --- | --- | --- |
89-
| Enterprise Edition: Core-based Licensing <sup>1</sup> | Operating system maximum | Operating system maximum |
90-
| Developer | Operating system maximum | Operating system maximum |
91-
| Standard | Limited to lesser of 4 sockets or 24 cores | Limited to lesser of 4 sockets or 24 cores |
92-
| Express | Limited to lesser of 1 socket or 4 cores | Limited to lesser of 1 socket or 4 cores |
93-
94-
<sup>1</sup> Enterprise Edition with Server + Client Access License (CAL) licensing is limited to 20 cores per [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] instance. (This licensing isn't available for new agreements.) There are no limits under the Core-based Server Licensing model.
95-
96-
In a virtualized environment, the compute capacity limit is based on the number of logical processors, not cores. The reason is that the processor architecture isn't visible to the guest applications.
97-
98-
For example, a server that has four sockets populated with quad-core processors and the ability to enable two SMT threads per core contains 32 logical processors with SMT enabled. But it contains only 16 logical processors with SMT disabled. These logical processors can be mapped to virtual machines on the server. The virtual machines' compute load on that logical processor is mapped to a thread of execution on the physical processor in the host server.
99-
100-
You might want to disable SMT when the performance for each virtual processor is important. You can configure SMT by using a BIOS setting for the processor during the BIOS setup, but it's typically a server-scoped operation that affects all workloads running on the server. You might consider separating workloads that run in virtualized environments, from workloads that would benefit from the SMT performance boost in a physical operating system environment.
101-
102-
## Reduce logical core count per NUMA node
103-
104-
You can reduce the logical core count per NUMA node on virtual machines, including Azure VMs, or on bare-metal [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] instances.
105-
106-
### Disable SMT in a virtual machine
107-
108-
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] has a supported limit of 64 logical cores per NUMA node. In some cases, the Azure Mv3-series VM might exceed this limit, which prevents [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] from starting, or allowing it to run with degraded performance. To disable SMT, make the following changes using **[wmic](/windows/win32/wmisdk/wmic)** and the **Registry Editor** (`reg.exe`). Be sure to back up your registry before editing it.
82+
[!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] has a supported limit of 64 logical cores per NUMA node. In some cases, the Azure Mv3-series VM might exceed this limit, which prevents [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] from starting, or allowing it to run with degraded performance. To disable SMT, make the following changes using **PowerShell** and the **Registry Editor** (`reg.exe`). Be sure to back up your registry before editing it.
10983

11084
1. Check the number of logical cores. SMT is enabled if the ratio is 2:1 (the number of logical cores is twice the number of cores).
11185

112-
```cmd
113-
wmic CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List
86+
```powershell
87+
Get-WmiObject -class win32_processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
11488
```
11589

11690
1. Disable SMT with the following two registry changes, then reboot the VM.
@@ -122,8 +96,8 @@ You can reduce the logical core count per NUMA node on virtual machines, includi
12296

12397
1. Check the number of logical cores once again. The number of logical cores should match the number of cores.
12498

125-
```cmd
126-
wmic CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List
99+
```powershell
100+
Get-WmiObject -class win32_processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
127101
```
128102

129103
### Reduce logical core count on bare-metal instances
@@ -146,6 +120,39 @@ On **AMD CPUs**, you can enable various Nodes per Socket (NPS) options.
146120
| `NPS2` | This configuration presents two NUMA nodes per socket, similar to SNC. |
147121
| `NPS4` | This configuration presents four NUMA nodes per socket. |
148122

123+
## Remarks
124+
125+
Systems with more than one physical processor or systems with physical processors that have multiple cores and/or SMT enable the operating system to execute multiple tasks simultaneously. Each thread of execution appears as a logical processor. For example, if your computer has two quad-core processors with SMT enabled and two threads per core, you have 16 logical processors: 2 processors x 4 cores per processor x 2 threads per core. It's worth noting that:
126+
127+
- The compute capacity of a logical processor from a single thread of an SMT core is less than the compute capacity of a logical processor from that same core with SMT disabled.
128+
129+
- The compute capacity of the two logical processors in the SMT core is greater than the compute capacity of the same core with SMT disabled.
130+
131+
Each edition of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] has two compute capacity limits:
132+
133+
- A maximum number of sockets (or physical processors or processor packages)
134+
135+
- A maximum number of cores as reported by the operating system
136+
137+
These limits apply to a single instance of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)]. They represent the maximum compute capacity that a single instance uses. They don't constrain the server where the instance might be deployed. In fact, deploying multiple instances of [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] on the same physical server is an efficient way to use the compute capacity of a physical server with more sockets and/or cores than the capacity limits allow.
138+
139+
The following table specifies the compute capacity limits for a single instance of each edition of [!INCLUDE [ssnoversion](../includes/ssnoversion-md.md)]:
140+
141+
| [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] edition | Maximum compute capacity for a single instance ([!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] [!INCLUDE [ssDE](../includes/ssde-md.md)]) | Maximum compute capacity for a single instance (AS, RS) |
142+
| --- | --- | --- |
143+
| Enterprise edition: Core-based licensing <sup>1</sup> | Operating system maximum | Operating system maximum |
144+
| Developer | Operating system maximum | Operating system maximum |
145+
| Standard | Limited to lesser of 4 sockets or 24 cores | Limited to lesser of 4 sockets or 24 cores |
146+
| Express | Limited to lesser of 1 socket or 4 cores | Limited to lesser of 1 socket or 4 cores |
147+
148+
<sup>1</sup> Enterprise edition with Server + Client Access License (CAL) licensing is limited to 20 cores per [!INCLUDE [ssNoVersion](../includes/ssnoversion-md.md)] instance. (This licensing isn't available for new agreements.) There are no limits under the Core-based Server Licensing model.
149+
150+
In a virtualized environment, the compute capacity limit is based on the number of logical processors, not cores. The reason is that the processor architecture isn't visible to the guest applications.
151+
152+
For example, a server that has four sockets populated with quad-core processors and the ability to enable two SMT threads per core contains 32 logical processors with SMT enabled. But it contains only 16 logical processors with SMT disabled. These logical processors can be mapped to virtual machines on the server. The virtual machines' compute load on that logical processor is mapped to a thread of execution on the physical processor in the host server.
153+
154+
You might want to disable SMT when the performance for each virtual processor is important. You can configure SMT by using a BIOS setting for the processor during the BIOS setup, but it's typically a server-scoped operation that affects all workloads running on the server. You might consider separating workloads that run in virtualized environments, from workloads that would benefit from the SMT performance boost in a physical operating system environment.
155+
149156
## Related content
150157

151158
- [Editions and supported features of SQL Server 2022](editions-and-components-of-sql-server-2022.md)

0 commit comments

Comments
 (0)