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

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

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
1933 확장 이벤트를 사용한 CPU 고부하 쿼리 추적 [1] jevida(강성욱) 2016.10.15 2119
1932 데이터에 대한 이해와 spill in tempdb jevida(강성욱) 2016.10.13 1764
1931 로그 파일이 많으면 왜 안 좋은가 jevida(강성욱) 2016.10.13 2051
1930 트랜잭션 백업 실패와 전체 백업 성공 그리고 대처 방안 jevida(강성욱) 2016.10.13 1543
1929 Fast recovery 와 로그 잠금 jevida(강성욱) 2016.10.13 2021
1928 고스트 클린업 jevida(강성욱) 2016.10.13 2251
1927 페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까? jevida(강성욱) 2016.10.13 1646
1926 DBCC WRITEPAGE - DBCC 명령을 사용한 데이터 파괴하기 jevida(강성욱) 2016.10.13 1641
1925 SQL Server Backup Error 3023 jevida(강성욱) 2016.10.13 2260
1924 Delete 작업과 페이지 offset 변화 jevida(강성욱) 2016.10.13 1477
1923 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 jevida(강성욱) 2016.10.13 5133
1922 PFX 형식의 인증서를 SQL Server에서 사용하기 jevida(강성욱) 2016.10.13 1150
» SQL Server NUMA 메모리 노드와 Operating System 접근 jevida(강성욱) 2016.10.13 1292
1920 SQL Server 에러 핸들링 비용 비교 jevida(강성욱) 2016.10.13 1303
1919 압축 백업 시 Checksum 옵션으로 손상 확인하기 jevida(강성욱) 2016.10.13 1639
1918 SQL Server 2012 Memory Manager 구성 jevida(강성욱) 2016.10.13 1263
1917 SQL Server Memory Manager 변화 jevida(강성욱) 2016.10.13 1483
1916 Ring_Buffer_Resource_Monitor jevida(강성욱) 2016.10.13 1000
1915 SQL Server 프로파일러 템플릿 만들기 jevida(강성욱) 2016.10.13 1337
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1788





XE Login