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

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

NUMA Node 메모리 블록

jevida(강성욱) 2016.10.11 03:31 Views : 1046

NUMA Node 메모리 블록

 

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

 

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

 

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

 

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

 

(특히 이번 포스트는 원문을 꼭 볼 것. 해석의 오류 가능성이 큼)

 

NUMA 노드는 QueryVirtualMemoryEX 윈도우 API를 사용하여 운영체제의 물리적인 페이지를 얻을 수 있다. SQL Server는 메모리 할당의 지역성을 추적하기 위해 이 API를 사용한다.

 

SQL Server는 가능한 로컬 메모리 노드를 사용하기 때문에 성능 추적이 매우 중요하다. 원격 노드에 메모리 액세스(원격 메모리/외부 메모리)가 발생하는 경우 불필요한 지연을 초래 하여 로커 로컬 노드에 접근하는 것보다 시간이 오래 걸려 성능이 저하 된다.

 

메모리 블록이 할당되면 SQL Server는 각 운영 시스템 페이지에서 보이는 물리적인 메모리 노드를 볼 수 있다. 메모리 노드의 할당에 따라 메모리 관리자는 다르게 동작한다.

Type

Description

Local

The memory is physically present on the same NUMA node as the SQL Server worker.

Away

The memory is known to belong to a remote node and the memory manager is still in the GROWTH (often initial ramp-up phase.) The memory is held on the away list until SQL Server requires its use.

Foreign

The memory is known to belong to a remote node and SQL Server has transitioned from the GROWTH phase because max server memory has been achieved. The memory block is being used remotely

 

노드는 대체로 서로 독립적으로 작동한다. 노드에 대한 모든 메모리 할당 및 메모리 할당 취소는 해당 노드와 연결된 메모리를 사용하여 수행 된다. 그러나 노드 N1에서 실행 중인 작업자가 노드 N2의 메모리에 있는 데이터베이스 페이지에 액세스해야 하는 경우에는 로컬이 아닌 메모리에 액세스 한다.

 

DBCC MEMEORYSTATUS를 사용하여 메모리의 할당 및 동작을 확인할 수 있다.

DBCC MEMORYSTATUS

 

 

 

각 물리적 NUMA 노드에 대해 하나의 SQL Server 메모리 노드가 있다. 메모리 노드는 서로 독립적으로 증가하지만 메모리는 균일하게 나눈다.

 

아래 그림을 보면 현재 원격 메모리와 로컬 메모리 할당 패턴을 볼 수 있다.

 

 

다음 그림은 메모리 관리자가 외부 메모리 블록의 증가 및 분포 출력 변경을 표시한 것이다. 모든 밸런싱 및 메모리 블록 할당이 완료되고 32KB의 예제 메모리만 노드1의 외부 메모리에 남아 있다.

 

 

 

[참고자료]

http://technet.microsoft.com/ko-kr/library/ms178144(v=sql.105).aspx

  • NUMA에서 버퍼 풀 증가 및 축소 :

http://technet.microsoft.com/ko-kr/library/ms345403(v=sql.105).aspx

 

 


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

No. Subject Author Date Views
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1416
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1317
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1833
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1160
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2317
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1361
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3184
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2688
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 872
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1159
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 880
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 973
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1359
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1742
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 956
» NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1046
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1187
1873 SQL Server IO and Latch 설명 jevida(강성욱) 2016.10.11 3071
1872 마지막 백업 시간 및 DBCC 확인 [1] jevida(강성욱) 2016.10.08 1589
1871 DMV를 활용한 CPU 트러블슈팅 - Sys.dm_exec_query_stats, sys.dm_os_ring_buffers 활용 [1] jevida(강성욱) 2016.10.08 1906





XE Login