다음을 통해 공유


SQL Server의 버전별 컴퓨팅 용량 한도

적용 대상:SQL Server

이 항목에서는 SQL Server의 버전별 컴퓨팅 용량 제한과 이들 버전이 SMT(동시 멀티스레딩) 프로세서가 있는 물리적 환경 및 가상화된 환경에서 서로 어떻게 다른지에 대해 설명합니다. Intel CPU에서 SMT를 하이퍼 스레딩이라고 합니다.

개요

컴퓨팅 용량 제한에 대한 매핑을 보여주는 다이어그램

이 표에서는 위 다이어그램의 표기법에 대해 설명합니다.

설명
0..1 없음 또는 1개
1 정확히 1개
1..* 1개 이상
0..* 없거나 1개 이상
1..2 1개 또는 2개

보다 중점적으로 설명하면

  • 가상 머신(VM)에 하나 이상의 가상 프로세서가 있습니다.
  • 하나 이상의 가상 프로세서가 정확히 가상 머신 한 대에 할당됩니다.
  • 0 또는 1개의 가상 프로세서가 0개 이상의 논리적 프로세서에 매핑됩니다. 가상 프로세서와 논리 프로세서 간의 매핑이:
    • 1대 0인 경우: 바인딩되지 않은 논리적 프로세서가 게스트 운영 체제에서 사용되지 않은 것을 나타냅니다.
    • 1대 다인 경우: 초과 할당을 나타냅니다.
    • 0대 다인 경우: 호스트 시스템에 가상 머신이 없음을 나타냅니다. 따라서 VM은 어떠한 논리 프로세서도 사용하지 않습니다.
  • 소켓은 0 이상의 코어에 매핑됩니다. 소켓에서 코어로의 매핑이 있을 때:
    • 1대 0인 경우: 빈 소켓을 나타냅니다. 칩이 설치되지 않았습니다.
    • 1대 1인 경우: 단일 코어 칩이 소켓에 설치되었음을 나타냅니다. 이 매핑은 요즘 거의 없습니다.
    • 1대 다인 경우: 다중 코어 칩이 소켓에 설치되었음을 나타냅니다. 일반적인 값은 2, 4, 8입니다.
  • 코어 하나는 0 또는 2개의 논리적 프로세서에 매핑됩니다. 코어가 논리 프로세서에 매핑될 때는:
    • 1대 1인 경우: SMT가 꺼져 있습니다.
    • 1 또는 2: SMT가 켜져 있습니다.

다음 정의는 이 항목에서 사용된 용어에 적용됩니다.

  • SQL Server, 운영 체제, 응용 프로그램 또는 드라이버의 관점에서 보면 스레드 또는 논리적 프로세서는 하나의 논리적 컴퓨팅 엔진입니다.

  • 코어는 프로세서 단위입니다. 이는 하나 이상의 논리 프로세서로 구성될 수 있습니다.

  • 실제 프로세서는 하나 이상의 코어로 구성될 수 있습니다. 실제 프로세서는 프로세서 패키지 또는 소켓과 동일합니다.

NUMA 노드당 논리 코어 수를 64개로 제한

NUMA 노드당 논리 프로세서가 64개 이상인 서버에서 스택 덤프와 같은 문제가 발생할 수 있습니다. BIOS 또는 펌웨어 구성은 운영 체제에 제공되는 논리 코어 수를 NUMA 노드당 최대 64개의 논리 프로세서로 줄일 수 있습니다.

주의

SQL Server 2022(16.x) 누적 업데이트 11에는 NUMA 노드당 64개 이상의 논리 코어를 검색하는 경우 데이터베이스 엔진이 시작되지 않는 호환성이 손상되는 변경이 도입되었습니다.

SQL Server 2022(16.x) 누적 업데이트 15부터 설치 프로그램은 이 구성이 지원되지 않으며 데이터베이스 엔진 서비스가 중지되고 비활성화된다는 경고를 생성합니다. 경고는 설치 로그에도 포함됩니다.

SMT 미사용으로 Azure Virtual Machine의 NUMA 노드당 논리 코어 수를 줄일 수 있습니다. 운영 체제 미설치 SQL Server 인스턴스의 경우, SNC(하위 NUMA 클러스터링) 또는 NPS(소켓당 노드) 옵션을 사용하여 논리 코어 수를 줄일 수 있습니다.

Azure Virtual Machine에서 SMT 사용 안 함

SQL Server에서 지원하는 논리 코어 한도는 NUMA 노드당 64개입니다. 경우에 따라 Azure Mv3 시리즈 VM이 이 한도를 초과하여 SQL Server가 시작되지 않거나 성능이 저하된 상태로 실행될 수 있습니다. SMT를 사용하지 않으려면 PowerShell레지스트리 편집기(reg.exe)를 사용하여 다음을 변경합니다. 레지스트리를 편집하기 전에 백업해야 합니다.

  1. 논리 코어 수를 확인합니다. 비율이 2:1인 경우(논리 코어 수는 코어 수의 두 배임) SMT가 사용됩니다.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. 다음 두 개의 레지스트리를 변경하여 SMT를 사용하지 않도록 설정한 다음, VM을 다시 부팅합니다.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. 논리 코어 수를 다시 한 번 확인합니다. 논리 코어 수는 코어 수와 일치해야 합니다.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

베어메탈 인스턴스의 논리 코어 수 감소

다음 섹션에서는 SQL Server의 운영 체제 미설치 인스턴스에서 논리 코어 수를 줄이는 방법을 설명합니다.

Intel Xeon CPU

Intel Xeon CPU 의 3세대, 4세대, 및 5세대에서, 이전에 클러스터 온 다이(CoD)로 불렸던 서브 NUMA 클러스터링(SNC)을 활성화하면 단일 물리적 소켓 내에서 두 개의 NUMA 도메인을 만들 수 있습니다.

메모

6세대 Intel Xeon CPU에는 기본적으로 하위 NUMA 클러스터링(SNC2 또는 SNC3)이 사용하도록 설정되어 있습니다. 일부 CPU 모델에서 기본 SNC 구성은 NUMA 노드당 64개 이상의 논리 프로세서를 생성할 수 있습니다. 이러한 CPU 모델에 대해 SNC2 또는 SNC3과 함께 BIOS/펌웨어에서 Intel 가상 NUMA 기능을 활성화해야 합니다.

구성 설정 설명
SNC 사용 안 함 1 하위 NUMA 클러스터링을 사용하지 않습니다.
SNC2 사용 2 소켓당 두 개의 NUMA 노드를 제공합니다.
SNC3 사용 2 소켓당 3개의 NUMA 노드를 제공합니다.
Intel VirtualNuma 지원 3 단일 실제 NUMA 노드 내에 여러 가상 노드를 만듭니다.

1 3세대, 4세대 및 5세대 Intel Xeon CPU의 기본값입니다.

2 6세대 Intel Xeon CPU 이상에 대한 기본값입니다.

3 6세대 Intel Xeon CPU 이상에서만 사용할 수 있습니다. SNC 기본값을 사용할 때 NUMA 노드당 논리 프로세서 수가 64를 초과하는 코어 수가 많은 CPU에 이 설정을 사용합니다.

AMD CPU

AMD CPU에서는 다양한 NPS(소켓당 노드) 옵션을 사용하도록 설정할 수 있습니다.

구성 설정 설명
NPS0 이중 소켓 시스템에서 NUMA는 모든 메모리 채널이 단일 노드 내에서 인터리빙된 형태로 나타납니다.
NPS1(기본값) 이 구성은 소켓당 하나의 NUMA 노드를 게시합니다.
NPS2 이 구성은 SNC와 유사하게 소켓당 두 개의 NUMA 노드를 게시합니다.
NPS4 이 구성은 소켓당 4개의 NUMA 노드를 게시합니다.

설명

하나 이상의 실제 프로세서가 포함된 시스템이나 여러 코어 및/또는 SMT가 있는 실제 프로세서가 포함된 시스템은 운영 체제에서 여러 태스크를 동시에 실행할 수 있도록 합니다. 각 실행 스레드는 논리적 프로세서로 나타납니다. 예를 들어 SMT를 사용하고 코어당 스레드 두 개인 쿼드 코어 프로세서 두 개가 컴퓨터에 있는 경우, 논리 프로세서 수는 프로세서 2개 x 프로세서당 코어 4개 x 코어당 스레드 2개로 16개가 됩니다. 주의해야 할 사항은 다음과 같습니다.

  • SMT 코어의 단일 스레드에서 논리적 프로세서의 컴퓨팅 용량은 SMT를 사용하지 않은 동일한 코어에서 논리적 프로세서의 컴퓨팅 용량보다 적습니다.

  • SMT 코어에서 논리적 프로세서 두 개의 컴퓨팅 용량은 SMT를 사용하지 않은 동일한 코어의 컴퓨팅 용량보다 큽니다.

각 SQL Server 버전은 다음과 같은 두 가지 컴퓨팅 용량 제한을 갖습니다.

  • 최대 소켓 수(또는 실제 프로세서 또는 프로세서 패키지)

  • 운영 체제에서 보고한 최대 코어 수

이러한 제한은 SQL Server의 단일 인스턴스에 적용됩니다. 또한 단일 인스턴스에서 사용하는 최대 컴퓨팅 용량을 나타냅니다. 이는 인스턴스가 배포될 수 있는 서버를 제한하지 않습니다. 실제로 SQL Server의 여러 인스턴스를 동일한 실제 서버에 배포하는 것은 허용된 용량 제한보다 더 많은 소켓 및/또는 코어가 있는 실제 서버의 컴퓨팅 용량을 사용할 수 있는 효율적인 방법입니다.

다음 표에서는 각 SQL Server버전의 단일 인스턴스에 대한 컴퓨팅 용량 제한을 보여 줍니다.

SQL Server 에디션 단일 인스턴스의 최대 컴퓨팅 용량(SQL Server 데이터베이스 엔진) 단일 인스턴스의 최대 컴퓨팅 용량(AS, RS)
엔터프라이즈 에디션: 코어 기반 라이선스 1 운영 체제 최대값 운영 체제 최대값
개발자 운영 체제 최대값 운영 체제 최대값
표준 2 소켓 4개 또는 코어 32개 미만으로 제한됨 소켓 4개 또는 코어 32개 미만으로 제한됨
익스프레스 소켓 1개 또는 코어 4개 미만으로 제한됨 소켓 1개 또는 코어 4개 미만으로 제한됨

1 Server + CAL(클라이언트 액세스 라이선스) 라이선싱이 있는 Enterprise Edition은 SQL Server 인스턴스당 20개의 코어로 제한됩니다. (새로운 계약에는 이 라이선싱을 사용할 수 없습니다.) 코어 기반 서버 라이선스 모델에서는 제한이 없습니다.

2 SQL Server 2022(16.x) 및 이전 버전에서 제한은 소켓 4개 또는 코어 24개보다 작습니다.

가상화된 환경에서 컴퓨팅 용량 제한은 코어가 아닌 논리 프로세서의 수를 기반으로 합니다. 그 이유는 프로세서 아키텍처가 게스트 응용 프로그램에서 볼 수 없기 때문입니다.

예를 들어, 쿼드 코어 프로세서 및 코어당 SMT 스레드 두 개를 사용할 수 있는 기능의 소켓 4개짜리 서버에는 SMT를 사용하는 논리적 프로세서가 32개 포함되어 있습니다. 그러나 SMT를 사용하지 않는 논리 프로세서는 16개만 포함합니다. 이러한 논리 프로세서는 서버의 가상 컴퓨터에 매핑될 수 있습니다. 해당 논리 프로세서의 가상 머신 컴퓨팅 로드는 호스트 서버의 실제 프로세서에서 실행 스레드에 매핑됩니다.

각각의 가상 프로세서 성능이 중요한 경우 SMT를 해제할 수 있습니다. BIOS 설정 중에 프로세서의 BIOS 설정을 사용하여 SMT를 구성할 수 있지만, 일반적으로 이는 서버 범위 작업으로, 서버에서 실행되는 모든 워크로드에 영향을 줍니다. 물리적 운영 체제 환경에서 SMT 성능 향상으로 이점을 얻을 수 있는 워크로드와 가상화된 환경에서 실행하는 워크로드와의 분리를 고려해 볼 수 있습니다.

도움말 보기

SQL 설명서에 참여하세요

SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 설명서를 개선하는 데 도움이 될 뿐만 아니라 페이지에 기여자로 이름이 올라갑니다.

자세한 내용은 Microsoft Learn 편집 설명서를 참조하세요.