데이터베이스 개발자 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
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2101
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1090
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1891
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1423
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1322
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1833
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1161
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2401
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1364
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3324
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2739
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 878
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1168
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 882
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 985
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1362
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1816
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 958
» NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1046
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1188





XE Login