방법: 소프트 NUMA를 사용하도록 SQL Server 구성
소프트 NUMA(소프트웨어 Non-Uniform Memory Access)를 사용하도록 SQL Server를 구성하려면 레지스트리를 편집하여 노드 구성 선호도 마스크를 추가해야 합니다. 소프트 NUMA 마스크는 이진 또는 DWORD(16진수 또는 십진수) 레지스트리 항목으로 정의할 수 있습니다. 소프트 NUMA를 구성하려면 데이터베이스 엔진을 다시 시작해야 합니다. 소프트웨어 NUMA를 구성하기 전에 NUMA(Non-Uniform Memory Access) 이해 및 SQL Server의 NUMA 지원 방법을 참조하십시오.
레지스트리를 올바르게 편집하지 않으면 시스템을 심각하게 손상시킬 수 있습니다. 따라서 레지스트리를 변경하기 전에 컴퓨터의 중요한 데이터는 백업해 두는 것이 좋습니다.
이 예에서 사용된 컴퓨터에는 8개의 CPU가 있고 하드웨어 NUMA가 없습니다. 3개의 소프트 NUMA 노드가 구성되어 있습니다. 데이터베이스 엔진 인스턴스 A는 CPU를 1부터 4까지 사용하도록 구성됩니다.. 데이터베이스 엔진의 두 번째 인스턴스가 설치되고 CPU 5에서 8까지 사용하도록 구성되었습니다. 이 예는 시각적으로 다음과 같이 나타낼 수 있습니다.
CPUs 1 2 3 4 5 6 7 8
Soft-NUMA <-N0--><-N1-><----N2---->
SQL Server <instance A ><instance B>
이제 I/O가 많은 인스턴스 A에는 I/O 스레드와 지연 기록기 스레드가 각각 두 개씩 있는 반면, 프로세서를 많이 사용하는 작업을 수행하는 인스턴스 B에는 I/O 스레드와 지연 기록기 스레드가 각각 하나뿐입니다. 두 인스턴스에 서로 다른 양의 메모리를 할당할 수 있지만 하드웨어 NUMA와 달리 두 인스턴스는 모두 동일한 운영 체제 메모리 블록에서 메모리를 받으며 메모리에서 프로세서로의 선호도가 없습니다.
CPU 선호도 마스크 설정
인스턴스 A에서 다음 문을 실행하고 CPU 선호도 마스크를 설정하여 CPU 1, 2, 3, 4를 사용하도록 구성합니다.
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'affinity mask', 15; RECONFIGURE; GO
인스턴스 B에서 다음 문을 실행하고 CPU 선호도 마스크를 설정하여 CPU 5, 6, 7, 8을 사용하도록 구성합니다.
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'affinity mask', 240; RECONFIGURE; GO
[!참고]
이 예의 선호도 마스크 값은 32비트 운영 체제의 컴퓨터에 적용됩니다.
CPU에 소프트 NUMA 노드 매핑
레지스트리 편집기 프로그램(regedit.exe)에서 다음 레지스트리 키를 추가하여 소프트 NUMA 노드 0을 CPU 1과 2에, 소프트 NUMA 노드 1을 CPU 3과 4에, 소프트 NUMA 노드 2를 CPU 5, 6, 7, 8에 각각 매핑합니다.
SQL Server 2005
유형
값 이름
값 데이터
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
SQL Server 2008
유형
값 이름
값 데이터
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
CPUMask
0xf0