SQL Server NUMA 메모리 노드와 Operating System 접근

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

NUMA 아키텍처는 각 프로세서 그룹에 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있다. 그러나 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스 한다. 각 그룹을 NUMA노드라 한다.

 

NUMA에 대한 내용은 다음 아티클을 참고하여 이해를 할 수 있도록 한다.

 

이번 포스트는 CSS SQL Server Engineers 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 바탕으로 정리 하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고 하길 바란다.

 

예를 들어 아래 표를 보면 노드00은 자체적으로 0단계이다. 노드03은 3단계이다. 노드 01은 2단계와 3단계이다.

 

Windows는 동일한 K-group(Processor Group)에 따라 노드를 모으려고 시도한다. 다음은 128 CPU, 8 Node시스템의 SQL Server 에러 로그에 기록된 내용이다.

 

노드 구성을 보면 노드 0,1,2,3은 K-Group = 0으로 정렬된다.

 

다음은 시스템 그룹 정렬에 따른 노드의 변화를 알 수 있다.

 

두 번째 구성 정렬(노드 0,1,4,5)은 최적화 되지 않은 구성이다. 이 시스템의 최적화된 근접은 첫 번째 레이아웃이다. NUMA기반 아키텍처를 이용한 노드 4,5,6,7은 별도의 블레이드에 있다. 이 경우 메모리 액세스는 로컬 액세스 느리다고 할 수 있다.

 

하드웨어 레벨에서 제공하는 SRAT 테이블, BIOS는 근접 정보가 포함되어 있다. 윈도우 메모리 관리자는 최적의 근접 응답을 결정하기 위해 메모리 액세스 검사를 수행하고 SRAT정보를 재정의 할 수 있다.

Windows서버는 레지스트리 키를 사용하여 CPU 종류, 메모리 레이아웃을 가지고 그룹 선호도 동작의 적절한 재정의를 할 수 있다.

 

하드웨어 제조 업체는 이러한 문제를 인식하고 특정 시스템의 튜닝 지침을 제공한다. 이러한 고급 구성은 최적의 성능을 얻기 위해 현재 SRAT 레이아웃을 서브-분할 하도록 추가 프로세서 그룹을 포함할 수 있다.

하드웨어 NUMA 환경에서 SQL Server 설치 시 제조사에 문의하여 최적의 근접 설정을 가져가길 추천한다.

 

 

[참고자료]

  • SQL Server NUMA Memory Node and the Operating System Proximity :

http://blogs.msdn.com/b/psssql/archive/2014/02/04/as-the-world-turns-sql-server-numa-memory-node-and-the-operating-system-proximity.aspx

 

 

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

No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 132
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 25
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
1923 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 jevida(강성욱) 2016.10.13 5369
1922 PFX 형식의 인증서를 SQL Server에서 사용하기 jevida(강성욱) 2016.10.13 1172
» SQL Server NUMA 메모리 노드와 Operating System 접근 jevida(강성욱) 2016.10.13 1320
1920 SQL Server 에러 핸들링 비용 비교 jevida(강성욱) 2016.10.13 1330
1919 압축 백업 시 Checksum 옵션으로 손상 확인하기 jevida(강성욱) 2016.10.13 1671
1918 SQL Server 2012 Memory Manager 구성 jevida(강성욱) 2016.10.13 1281
1917 SQL Server Memory Manager 변화 jevida(강성욱) 2016.10.13 1516
1916 Ring_Buffer_Resource_Monitor jevida(강성욱) 2016.10.13 1010
1915 SQL Server 프로파일러 템플릿 만들기 jevida(강성욱) 2016.10.13 1373
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1855
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1866
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1326
1911 Memory Pressure jevida(강성욱) 2016.10.12 1147
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2580
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1582
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3216
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1347
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1344
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 1995
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2535





XE Login

테스트 팝업
Close