메모리 관리 아키텍처 – NUMA 지원 방법

 

  • Version : SQL Server 2005, 2008, 2008R2

 

특정 하드웨어 NUMA 노드에서 실행되는 스레드가 메모리를 할당하는 경우 SQL Server 메모리 관리자는 참조 효율을 위해 해당 NUMA 노드와 연결된 메모리에서 메모리 할당을 시도한다. 마찬가지로 버퍼풀 페이지도 해당 NUMA 노드와 연결된 메모리에서 메모리 할당을 시도 한다. 마찬가지로 버퍼풀 페이지도 하드웨어 NUMA 노드에 분산된다. 스레드가 로컬 메모리에 할당된 버퍼 페이지의 메모리에 액세스하는 것이 외부 메모리를 액세스하는 것보다 효율 적이다.

 

 

각 NUMA 노드(하드웨어 NUMA, 소프트 NUMA)에는 네트워크 I/O 처리에 사용되는 I/O 완료 포트가 연결되어 있어 여러 포트에 네트워크 I/O 처리를 분산하는데 도움이 된다. 클라이언트가 SQL Server에 연결되면 노드 중 하나에 연결이 바인딩 된다. 이 클라이언트의 모든 일괄 처리요청은 해당 노드에서 처리 된다.

 

 

NUMA 환경에서 SQL Server 인스턴스를 시작 할 때마다 오류로그에 NUMA 구성에 대한 정보 메시지가 추가 된다.

 

 

[소프트 NUMA 노드를 하드웨어 NUMA 노드에 매핑하는 방법]

소프트 NUMA는 컴퓨터의 모든 SQL Server 인스턴스에 대해 한 번 정의되므로 여러 데이터베이스 엔진 인스턴스에 모두 동일한 소프트 NUMA 노드가 표시 된다.

 

각 데이터베이스 엔진 인스터턴스는 affinity mask 옵션을 사용하여 적절한 CPU를 선택 한다. 그럼 다음 각 인스턴스는 해당 CPU와 연결된 소프트 NUMA를 사용한다.

 

 

시작 시 Windows는 하드웨어 NODE 0에서 운영체제에 대한 메모리를 할당 한다. 따라서 하드웨어 NODE 0에는 다른 응용 프로그램에 사용할 수 있는 로컬 메모리가 다른 노드 보다 적다. 이 문제는 큰 시스템 파일 캐시가 있는 경우 더욱 크게 나타난다.

 

둘 이상의 NUMA 노드가 있는 컴퓨터에서 SQL Server를 시작하면 NODE 0보다 NUMA 노드에서 시작되므로 해당 전역 구조가 로컬 메모리에 할당 될 수 있다.

 

 

[NUMA 노드에 연결이 할당되는 방법]

TCP와 VIA는 둘 다 하나 이상의 NUMA 노드로 연결 선호도가 설정 될 수 있다. 선호도가 설정되지 않은 경우 또는 명명된 파이프나 공유 메모리와 연결된 경우에는 연결이 라운드 로빈 방식으로 NUMA 노드에 배포 된다. 연결은 각 NUMA 노드 내에서 가장 적게 로드된 스케줄러에서 실행된다.

 

새 연결을 할당하는 라운드 로빈 방식의 특성상 한 노드에서는 모든 CPU가 사용되고 다른 노드는 유후 상태에 있을 수 있다. CPU 수가 매우 적고 대량 로드와 같은 장기 실행 일괄처리로 인해 예약 일정이 불균형이 큰 경우 NUMA를 해제하면 성능이 향상 될 수 있다.

 

 

[참고자료]

  • SQL Server의 NUMA 지원 방법 :

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

 

  • How It Works: SQL Server 2008 NUMA and Foreign Pages :

http://blogs.msdn.com/b/psssql/archive/2010/02/23/how-it-works-sql-server-2008-numa-and-foreign-pages.aspx

 

 

  • Mainstream NUMA and the TCP/IP stack, Part IV: Parallelizing TCP/IP

http://blogs.msdn.com/b/ddperf/archive/2008/09/09/mainstream-numa-and-the-tcp-ip-stack-part-iv-paralleling-tcp-ip.aspx

 

  • SQL Server on Non-Uniform Memory Architecture (NUMA) Systems

http://www.qdpma.com/systemarchitecture/HighCallVolumeSQLonNUMA.html

http://www.qdpma.com/systemarchitecture/NUMA.html

 

  • Assigning SQL Server, SQL Agent to a Processor Group (OOM, Hang, Performance Counters Always Zero for Buffer Pool, …)

http://blogs.msdn.com/b/psssql/archive/2012/01/23/assigning-sql-server-sql-agent-to-a-processor-group-oom-hang-performance-counters-always-zero-for-buffer-pool.aspx

 

 



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

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21600
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12231
» 메모리 관리 아키텍처 – NUMA 지원 방법 jevida(강성욱) 2016.09.29 1611
1793 메모리 관리 아키텍처 – NUMA(Non-Uniform Memory Access)이해 jevida(강성욱) 2016.09.29 1487
1792 메모리 관리 아키텍처 – Hot Add 메모리 jevida(강성욱) 2016.09.28 961
1791 메모리 관리 아키텍처 – 버퍼 관리_페이지 쓰기 jevida(강성욱) 2016.09.28 1112
1790 메모리 관리 아키텍처 – 버퍼 관리_페이지 읽기 jevida(강성욱) 2016.09.28 1296
1789 메모리 관리 아키텍처 – 버퍼 관리 jevida(강성욱) 2016.09.28 1907
1788 메모리 관리 아키텍처 – Min/Max Server Memory 효과 jevida(강성욱) 2016.09.28 2624
1787 메모리 관리 아키텍처 – 동적 메모리 관리 jevida(강성욱) 2016.09.28 1401
1786 메모리 관리 아키텍처 – 프로세스 주소 공간 jevida(강성욱) 2016.09.28 1407
1785 메모리 관리 아키텍처 – 메모리 아키텍처 jevida(강성욱) 2016.09.28 1933
1784 데이터 압축 상태에 대한 개체 크기 예상 jevida(강성욱) 2016.09.28 1410
1783 sp_MSforeachdb, sp_MSforeachtable 프로시저 활용하기 jevida(강성욱) 2016.09.28 3290
1782 SQL Server 쿼리 처리 아키텍처_분산 쿼리 아키텍처 jevida(강성욱) 2016.09.28 1192
1781 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 인덱스 작업 jevida(강성욱) 2016.09.28 1424
1780 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 처리 수준 jevida(강성욱) 2016.09.28 1946
1779 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 jevida(강성욱) 2016.09.28 1825
1778 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - Preparing SQL Statements jevida(강성욱) 2016.09.28 1056
1777 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 강제 매개 변수화 jevida(강성욱) 2016.09.28 1047
1776 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 단순 매개 변수화 jevida(강성욱) 2016.09.28 929
1775 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 매개 변수 및 실행 계획 재사용 jevida(강성욱) 2016.09.28 1151





XE Login