SQL Server 2016 Automatic Soft NUMA
- Version : SQL Server 2016
각 프로세서 그룹에는 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있다. 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스 한다. 각 그룹을 NUMA 노드라 한다. 다른 NUMA 노드와 연결된 메모리보다 로컬 메모리를 액세스하는것이 훨씬 더 빠르다. NUMA 하드웨어에서는 일부 메모리 영역이 실제로 나머지 영역과 다른 버스에 있다. NUMA는 로컬 메모리와 외부메모리를 사용하므로 다른 영역에 비해 일부 메모리 영역에 액세스하는 시간이 오래 걸린다.
- NUMA 아키텍처 : http://sqlmvp.kr/140150873571
SQL Server 2016에서는 하드웨어 레이아웃 정보를 바탕으로 NUMA노드당 8개 이상의 CPU 보고시 자동으로 Soft NUMA를 구성한다. 파티션 트리거는 다양한 조절을 통해 데이터베이스 엔진의 향상된 확장성 및 성능을 조절한다. 자동 Soft NUMA는 논리적 CPU 비율, 총 CPU 개수 및 기타 요소를 고려하여 논리적으로 8개 이하의 CPU를 포함하는 각각의 노드를 만든다.
Soft NUMA가 적용되면 에러로그에서 다음과 같은 문구를 확인할 수 있다.
Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 logical processors. |
DMV를 통해서도 NUMA 활성에 대한 값을 확인할 수 있다.
select cpu_count, softnuma_configuration_desc, softnuma_configuration from sys.dm_os_sys_info |
아래 그림은 CPU 30 core를 할당하였을때와60core를 할당하였을때의 자동으로 NUMA그룹이 할당된 것을 나타낸 것으로 CPU 할당은 SQL 시작 매개변수를 지정하여 테스트하였다.
[CPU 30 core]
[CPU 60 core]
자동 Soft NUMA 동작은 하이퍼스레딩(HT/logical processor)을 인지하여 최적의 노드 배치를 결정할때 CPU논리 정보를 조회화고 노드에서의 성능 변동을 초래할 수 있는논리적 및 물리적 노드 그룹의 교차 액세스를 방지하기 위해 사용된다. 또한 백그라운드 프로세스의 대부분은 각 노드내에서 생성된다. 분할 및 추가 노드의 생성은 백그라운드로 처리된다. 예를 들어 각 노드는 네트워크 활동을 수신할 수 있는 작업자를 포함하고 암호화 작업을 수행한다. Soft NUMA 구성으로 생성된 추가 노드는 리스너, 스케일링 및 네트워크 및 암호화 기능의 수를 증가 시킨다.
[참고자료]
- Automatic Soft NUMA : https://blogs.msdn.microsoft.com/psssql/2016/03/30/sql-2016-it-just-runs-faster-automatic-soft-numa/
- NUMA – http://sqlmvp.kr/140150873571
- NUMA 버퍼 풀 증가 및 축소 - http://sqlmvp.kr/140191005709
- SMP : http://sqlmvp.kr/140188414498
- NUMA Node 메모리 블록 - http://sqlmvp.kr/140200235767
-
SQL Server NUMA 메모리 노드와 Operating System 접근 - http://sqlmvp.kr/140206173815
2016-09-06 / 강성욱 / http://sqlmvp.kr
SQL Server, SQL 2016, NUMA, Soft NUMA, Non uniform memory access, NUMA 아키텍처, Automatic Soft NUMA, Memory Node, NUMA NODE
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 (0) | 2016.09.29 |
---|---|
SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 (0) | 2016.09.10 |
NUMA Architecture (0) | 2016.09.07 |
SQLCMD 유틸리티 사용하기 (0) | 2016.08.31 |
In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 (0) | 2016.08.25 |