다음을 통해 공유


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

적용 대상: SQL Server

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

개요

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

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

Description
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 CPU에서는 이전에 CoD(Cluster-on-Die)라고 하는 SNC(하위 NUMA 클러스터링)를 사용하도록 설정할 수 있습니다. 이를 통해 단일 물리적 소켓 내 두 개의 NUMA 도메인이 존재합니다.

구성 설정 설명
SNC 사용 안 함(기본값) 하위 NUMA 클러스터링을 사용하지 않습니다.
SNC 사용함 하위 NUMA 클러스터링을 사용합니다.

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)
Enterprise Edition: 코어 기반 라이선스 1 운영 체제가 지원하는 최대 크기 운영 체제가 지원하는 최대 크기
Developer 운영 체제가 지원하는 최대 크기 운영 체제가 지원하는 최대 크기
Standard 소켓 4개 또는 코어 24개 미만으로 제한됨 소켓 4개 또는 코어 24개 미만으로 제한됨
Express 소켓 1개 또는 코어 4개 미만으로 제한됨 소켓 1개 또는 코어 4개 미만으로 제한됨

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

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

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

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

도움말 보기

SQL 설명서에 참여하세요

SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 직접 편집하여 설명서를 개선하고, 페이지에 기여자로 참여하세요.

자세한 내용은 SQL Server 설명서에 기여하는 방법을 참조하세요