soft-NUMA(SQL Server)Soft-NUMA (SQL Server)

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

최신 프로세서에는 소켓당 여러 코어가 있습니다.Modern processors have multiple cores per socket. 일반적으로 각 소켓은 단일 NUMA 노드로 표시됩니다.Each socket is represented, usually, as a single NUMA node. SQL Server 데이터베이스 엔진은 여러 내부 구조를 분할하며 NUMA 노드에 따라 서비스 스레드를 분할합니다.The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. 소켓당 10개 이상의 코어를 포함하고 있는 프로세서의 경우 소프트웨어 NUMA를 사용하여 하드웨어 NUMA 노드를 분할하면 일반적으로 확장성 및 성능이 향상됩니다.With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2 soft-NUMA(소프트웨어 기반 NUMA) 이전에는 레지스트리를 편집하여 노드 구성 선호도 마스크를 추가해야 했으며 인스턴스가 아닌 호스트 수준에서 구성했습니다.Prior to SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2, software-based NUMA (soft-NUMA) required you to edit the registry to add a node configuration affinity mask, and was configured at the host level, rather than per instance. SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2 및 SQL Server 2016(13.x)SQL Server 2016 (13.x)부터는 SQL Server 데이터베이스 엔진SQL Server Database Engine 서비스가 시작될 때 데이터베이스 인스턴스 수준에서 soft-NUMA가 자동으로 구성됩니다.Starting with SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016(13.x)SQL Server 2016 (13.x), soft-NUMA is configured automatically at the database-instance level when the SQL Server 데이터베이스 엔진SQL Server Database Engine service starts.

참고

Hot Add 프로세서는 soft-NUMA에서 지원되지 않습니다.Hot-add processors are not supported by soft-NUMA.

자동 soft-NUMAAutomatic Soft-NUMA

SQL Server 2016(13.x)SQL Server 2016 (13.x)에서는 SQL Server 데이터베이스 엔진SQL Server Database Engine 시작 시 NUMA 노드 또는 소켓당 8개 초과의 실제 코어를 감지할 때마다 soft-NUMA 노드가 기본적으로 자동 생성됩니다.With SQL Server 2016(13.x)SQL Server 2016 (13.x), whenever the SQL Server 데이터베이스 엔진SQL Server Database Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. 하이퍼 스레드 프로세서 코어는 노드에서 실제 코어 수를 계산할 때 구별되지 않습니다.Hyper-threaded processor cores are not differentiated when counting physical cores in a node. 실제 코어 수가 소켓당 8개를 초과하여 감지된 경우 SQL Server 데이터베이스 엔진SQL Server Database Engine은 코어 8개를 포함하는 이상적인 soft-NUMA 노드를 만들지만 노드당 논리 코어가 5개 또는 최대 9개까지 감소하거나 증가할 수 있습니다.When the detected number of physical cores is more than eight per socket, the SQL Server 데이터베이스 엔진SQL Server Database Engine creates soft-NUMA nodes that ideally contain eight cores, but can go down to five or up to nine logical cores per node. 하드웨어 노드의 크기는 CPU 선호도 마스크에 의해 제한될 수 있습니다.The size of the hardware node can be limited by a CPU affinity mask. NUMA 노드 수는 지원되는 최대 NUMA 노드 수를 초과할 수 없습니다.The number of NUMA nodes never exceeds the maximum number of supported NUMA nodes.

SET SOFTNUMA 인수가 포함된 ALTER SERVER CONFIGURATION (Transact-SQL) 문을 사용하여 soft-NUMA를 비활성화하거나 다시 활성화할 수 있습니다.You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. 이 설정의 값을 변경하려면 데이터베이스 엔진의 다시 시작을 적용해야 합니다.Changing the value of this setting requires a restart of the database engine to take effect.

아래 그림은 SQL ServerSQL Server가 각 노드 또는 소켓당 8개를 초과하는 실제 코어를 가진 하드웨어 NUMA 노드를 검색할 때 SQL Server 오류 로그에서 볼 수 있는 soft-NUMA에 관한 정보를 보여줍니다.The figure below shows the type of information regarding soft-NUMA that you see in the SQL Server error log, when SQL ServerSQL Server detects hardware NUMA nodes with greater than eight physical cores per each node or socket.

2016-11-14 13:39:43.17 Server      SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.     
2016-11-14 13:39:43.35 Server      Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.     
2016-11-14 13:39:43.63 Server      Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.     
2016-11-14 13:39:43.63 Server      Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.   

수동 Soft-NUMAManual Soft-NUMA

soft-NUMA를 사용하도록 수동으로 SQL ServerSQL Server을 구성하려면 자동 soft_NUMA를 비활성화하고 레지스트리를 편집하여 노드 구성 선호도 마스크를 추가합니다.To manually configure SQL ServerSQL Server to use soft-NUMA, disable automatic soft-NUMA, and edit the registry to add a node configuration affinity mask. 이 방법을 사용할 때 soft-NUMA 마스크는 이진, DWORD(16진수 또는 십진수) 또는 QWORD(16진수 또는 십진수) 레지스트리 항목으로 정의할 수 있습니다.When using this method, the soft-NUMA mask can be stated as a binary, DWORD (hexadecimal or decimal), or QWORD (hexadecimal or decimal) registry entry. 첫 번째 32개를 초과하는 CPU를 구성하려면 QWORD 또는 BINARY 레지스트리 값을 사용합니다(QWORD 값은 SQL Server 2012(11.x)SQL Server 2012 (11.x) 이전에 사용할 수 없음).To configure more than the first 32 CPUs use QWORD or BINARY registry values (QWORD values cannot be used prior to SQL Server 2012(11.x)SQL Server 2012 (11.x)). 레지스트리를 수정한 후 soft-NUMA 구성이 적용되려면 데이터베이스 엔진Database Engine을 다시 시작해야 합니다.After modifying the registry, you must restart the 데이터베이스 엔진Database Engine for the soft-NUMA configuration to take effect.

CPU 번호는 0부터 시작합니다.CPUs are numbered starting with 0.

경고

레지스트리를 올바르게 편집하지 않으면 시스템을 심각하게 손상시킬 수 있습니다.Incorrectly editing the registry can severely damage your system. 따라서 레지스트리를 변경하기 전에 컴퓨터의 중요한 데이터는 백업해 두는 것이 좋습니다.Before making changes to the registry, we recommend that you back up any valued data on the computer.

하드웨어 NUMA가 없는 8개의 CPU를 포함한 컴퓨터 예제를 가정합니다.Consider the example of a computer with eight CPUs, that does not have hardware NUMA. 3개의 소프트 NUMA 노드가 구성되어 있습니다.Three soft-NUMA nodes are configured.
데이터베이스 엔진Database Engine 인스턴스 A는 CPU를 0부터 3까지 사용하도록 구성됩니다. instance A is configured to use CPUs 0 through 3. 데이터베이스 엔진Database Engine 의 두 번째 인스턴스가 설치되고 CPU 4에서 7까지 사용하도록 구성되었습니다.A second instance of the 데이터베이스 엔진Database Engine is installed and configured to use CPUs 4 through 7. 이 예는 시각적으로 다음과 같이 나타낼 수 있습니다.The example can be visually represented as:

CPUs 0 1 2 3 4 5 6 7

Soft-NUMA <-N0--><-N1-><----N2---->

SQL Server <instance A ><instance B>

이제 I/O가 많은 인스턴스 A에는 I/O 스레드 두 개와 지연 기록기 스레드 하나가 있습니다.Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread. 프로세서를 많이 사용하는 작업을 수행하는 인스턴스 B에는 I/O 스레드와 지연 기록기 스레드가 각각 하나뿐입니다.Instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. 두 인스턴스에 서로 다른 양의 메모리를 할당할 수 있지만 하드웨어 NUMA와 달리 두 인스턴스는 모두 동일한 운영 체제 메모리 블록에서 메모리를 받으며 메모리에서 프로세서로의 선호도가 없습니다.Differing amounts of memory can be assigned to the instances, but unlike hardware NUMA, they both receive memory from the same operating system memory block, and there is no memory-to-processor affinity.

지연 기록기 스레드는 물리적 NUMA 메모리 노드의 SQLOS 보기와 연결되어 있습니다.The lazy writer thread is tied to the SQLOS view of the physical NUMA memory nodes. 따라서, 물리적 NUMA 노드 수로 표시되는 하드웨어는 생성되는 지연 기록기 스레드의 수와 같습니다.Therefore, whatever the hardware presents as the number of physical NUMA nodes, this will be the number of lazy writer threads that are created. 자세한 내용은 작동 방식: 소프트 NUMA, I/O 완료 스레드, 지연 기록기 작업자 및 메모리 노드를 참조하세요.For more information, see How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

참고

Soft-NUMA 레지스트리 키는 SQL ServerSQL Server인스턴스를 업그레이드할 때 복사되지 않습니다.The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

CPU 선호도 마스크 설정Set the CPU affinity mask

인스턴스 A에서 CPU 선호도 마스크를 설정하는 다음 문을 실행하여 CPU 0, 1, 2, 3을 사용하도록 구성합니다.Run the following statement on instance A to configure it to use CPUs 0, 1, 2, and 3 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 3;  

인스턴스 B에서 CPU 선호도 마스크를 설정하는 다음 문을 실행하여 CPU 4, 5, 6, 7을 사용하도록 구성합니다.Run the following statement on instance B to configure it to use CPUs 4, 5, 6, and 7 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=4 TO 7;  

CPU에 소프트 NUMA 노드 매핑Map soft-NUMA nodes to CPUs

레지스트리 편집기 프로그램(regedit.exe)에서 다음 레지스트리 키를 추가하여 soft-NUMA 노드 0을 CPU 0과 1에, soft-NUMA 노드 1을 CPU 2와 3에, soft-NUMA 노드 2를 CPU 4, 5, 6, 7에 각각 매핑합니다.Using the Registry Editor program (regedit.exe), add the following registry keys to map soft-NUMA node 0 to CPUs 0 and 1, soft-NUMA node 1 to CPUs 2 and 3, and soft-NUMA node 2 to CPUs 4, 5, 6, and 7.

CPU 60 - 63을 지정하려면 QWORD 값 F000000000000000 또는 BINARY 값 1111000000000000000000000000000000000000000000000000000000000000을 사용합니다.To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

다음 예제에서는 DL580 G9 서버가 있고 4개의 소켓에서 소켓당 18개의 코어가 있으며 각 소켓은 자체 K 그룹에 있다고 가정합니다.In the following example, assume you have a DL580 G9 server, with 18 cores per socket (in four sockets), and each socket is in its own K-group. 만들 수 있는 soft-NUMA 구성은 노드당 6개의 코어, 그룹당 3개의 노드, 4개의 그룹과 같습니다.A soft-NUMA configuration that you might create would look something like the following: six cores per Node, three nodes per group, four groups.

K 그룹이 여러 개인 SQL Server 2016(13.x)SQL Server 2016 (13.x) 서버의 예Example for a SQL Server 2016(13.x)SQL Server 2016 (13.x) server with multiple K-Groups 형식Type 값 이름Value name 값 데이터Value data
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD 그룹Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD 그룹Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD 그룹Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD 그룹Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD 그룹Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD 그룹Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD 그룹Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD 그룹Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD 그룹Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD 그룹Group 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD 그룹Group 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD 그룹Group 33

메타데이터Metadata

다음 DMV를 사용하여 soft-NUMA의 현재 상태 및 구성을 볼 수 있습니다.You can use the following DMVs to view the current state and configuration of soft-NUMA.

참고

sp_configure(Transact-SQL)를 사용하여 자동 soft-NUMA에 대한 실행 값을 볼 수 있지만 sp_configure를 사용하여 해당 값을 변경할 수는 없습니다.While you can view the running value for automatic soft-NUMA using sp_configure (Transact-SQL), you cannot change its value using sp_configure. SET SOFTNUMA 인수가 포함된 ALTER SERVER CONFIGURATION (Transact-SQL) 문을 사용해야 합니다.You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

참고 항목See Also

NUMA 노드에 TCP IP 포트 매핑(SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
선호도 마스크 서버 구성 옵션 affinity mask Server Configuration Option
ALTER SERVER CONFIGURATION (Transact-SQL) ALTER SERVER CONFIGURATION (Transact-SQL)
sys.dm_os_nodes (Transact-SQL)sys.dm_os_nodes (Transact-SQL)