SQL Server의 NUMA 지원 방법

NUMA(Non-Uniform Memory Access) 아키텍처를 이용하기 위한 SQL Server 2005의 주요 변경 내용은 다음과 같습니다.

공통되는 CPU 그룹화

SQL Server는 Windows에 표시되는 하드웨어 NUMA 경계를 기반으로 CPU 그룹화에 매핑할 스케줄러를 그룹화합니다. 예를 들어 16-way 상자에 CPU를 4개씩 포함하는 NUMA 노드가 4개 있을 수 있습니다. 이를 통해 노드에서 태스크를 처리할 때 해당 스케줄러 그룹에 대한 메모리 효율을 높일 수 있습니다. SQL Server에서는 하나의 하드웨어 NUMA 노드와 연결된 CPU를 여러 CPU 노드로 다시 세분화할 수 있습니다. 이를 소프트 NUMA라고 합니다. 일반적으로 CPU 노드에서 작업을 분할하기 위해 CPU를 세분화합니다. 소프트 NUMA에 대한 자세한 내용은 NUMA(Non-Uniform Memory Access) 이해를 참조하십시오.

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

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

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

SQL Server에서 소프트 NUMA 노드를 하드웨어 NUMA 노드에 매핑하는 방법

소프트 NUMA는 컴퓨터의 모든 SQL Server 인스턴스에 대해 한 번 정의되므로 여러 데이터베이스 엔진 인스턴스에 모두 동일한 소프트 NUMA 노드가 표시됩니다. 각 데이터베이스 엔진 인스턴스는 affinity mask 옵션을 사용하여 적절한 CPU를 선택합니다. 그런 다음 각 인스턴스는 해당 CPU와 연결된 소프트 NUMA를 사용합니다.

시작 시 Windows는 하드웨어 NODE 0에서 운영 체제에 대한 메모리를 할당합니다. 따라서 하드웨어 NODE 0에는 다른 응용 프로그램에 사용할 수 있는 로컬 메모리가 다른 노드보다 적습니다. 이 문제는 큰 시스템 파일 캐시가 있는 경우 더욱 두드러집니다. 둘 이상의 NUMA 노드가 있는 컴퓨터에서 SQL Server를 시작하면 NODE 0보다 NUMA 노드에서 시작되므로 해당 전역 구조가 로컬 메모리에 할당될 수 있습니다. 소프트 NUMA를 구성하려면 방법: 소프트 NUMA를 사용하도록 SQL Server 구성을 참조하십시오.

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

TCP와 VIA는 둘 다 하나 이상의 NUMA 노드로 연결 선호도가 설정될 수 있습니다. 선호도가 설정되지 않은 경우 또는 명명된 파이프나 공유 메모리와 연결된 경우에는 연결이 라운드 로빈 방식으로 NUMA 노드에 배포됩니다. 연결은 각 NUMA 노드 내에서 가장 적게 로드된 스케줄러에서 실행됩니다. 새 연결을 할당하는 라운드 로빈 방식의 특성상, 한 노드에서는 모든 CPU가 사용되고 다른 노드는 유휴 상태에 있을 수 있습니다. CPU 수가 매우 적고(예: 2개) 대량 로드와 같은 장기 실행 일괄 처리로 인해 예약 일정 불균형이 큰 경우 NUMA를 해제하면 성능이 향상될 수 있습니다. 자세한 내용은 방법: NUMA 노드에 TCP/IP 포트 매핑을 참조하십시오.

SQL Server 버전 제한

SQL Server 2000 서비스 팩 3까지에는 NUMA에 대한 특별한 지원이 포함되어 있지 않습니다. 그러나 서비스 팩 4에는 몇 가지 제한된 NUMA 최적화 기능이 있습니다. SQL Server 2005에서는 많은 기능이 향상되었으므로 NUMA 사용자가 NUMA 아키텍처를 완전히 이용하려면 SQL Server 2005로 업그레이드하는 것이 좋습니다.