데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQL Server 2016 Automatic Soft NUMA

 

  • Version : SQL Server 2016

 

각 프로세서 그룹에는 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있다. 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스 한다. 각 그룹을 NUMA 노드라 한다. 다른 NUMA 노드와 연결된 메모리보다 로컬 메모리를 액세스하는것이 훨씬 더 빠르다. NUMA 하드웨어에서는 일부 메모리 영역이 실제로 나머지 영역과 다른 버스에 있다. NUMA는 로컬 메모리와 외부메모리를 사용하므로 다른 영역에 비해 일부 메모리 영역에 액세스하는 시간이 오래 걸린다.

 

 

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 구성으로 생성된 추가 노드는 리스너, 스케일링 및 네트워크 및 암호화 기능의 수를 증가 시킨다.

 

[참고자료]



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
2071 SQL Server 2016 자동 통계 업데이트 임계값 변경 jevida(강성욱) 2017.01.11 4599
2070 SQL Server 2016 Multiple Log Writer Workers jevida(강성욱) 2017.01.11 3811
2069 SQL Server 2016 Larger Data File Writes jevida(강성욱) 2017.01.11 3188
2068 SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 jevida(강성욱) 2017.01.11 3651
» SQL Server 2016 Automatic Soft NUMA jevida(강성욱) 2017.01.11 3103
2066 SQL Server 2016 Tempdb 환경 설정 jevida(강성욱) 2017.01.11 4395
2065 SQL Server 2016 향상된 즉시 파일 초기화 jevida(강성욱) 2017.01.11 2757
2064 SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴 jevida(강성욱) 2017.01.11 2635
2063 SQL Server 2016 Tempdb 성능 향상 jevida(강성욱) 2017.01.11 4731
2062 SQL Server 2016 DBCC CHECK 작업 성능 향상 jevida(강성욱) 2017.01.11 2376
2061 Microsoft Azure - SQL Server가 포함된 가상 컴퓨터 생성하기 jevida(강성욱) 2017.01.11 1841
2060 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.01.11 1305
2059 Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 jevida(강성욱) 2017.01.11 1877
2058 SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 jevida(강성욱) 2017.01.11 1861
2057 SQLCMD 유틸리티 사용하기 jevida(강성욱) 2017.01.11 7925
2056 In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 jevida(강성욱) 2017.01.11 4569
2055 SQL Server Job Agent는 몇 개까지 실행이 가능할까? jevida(강성욱) 2017.01.11 1757
2054 확장이벤트 사용시 주의사항 jevida(강성욱) 2017.01.11 1631
2053 Unix(Linux) timestamp(bigint) 형식을 datetime 으로 변경하기 jevida(강성욱) 2017.01.11 3004
2052 Query Rule Off를 사용한 SQL Server 옵티마이저 비활성화 jevida(강성욱) 2017.01.11 1574





XE Login