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
)를 사용하여 다음을 변경합니다. 레지스트리를 편집하기 전에 백업해야 합니다.
논리 코어 수를 확인합니다. 비율이 2:1인 경우(논리 코어 수는 코어 수의 두 배임) SMT가 사용됩니다.
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
다음 두 개의 레지스트리를 변경하여 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
논리 코어 수를 다시 한 번 확인합니다. 논리 코어 수는 코어 수와 일치해야 합니다.
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 Server를 개선하기 위해 제안할 사항이 있나요?
- Microsoft Q & A(SQL Server)
- DBA Stack Exchange(태그 sql-server): SQL Server 관련 문의 사항
- Stack Overflow(태그 sql-server): SQL 개발 관련 문의 사항
- Reddit: SQL Server에 대한 일반 토론
- Microsoft SQL Server 사용 조건 및 정보
- 비즈니스 사용자에 대한 지원 옵션
- 그 밖의 SQL Server 도움말 및 피드백
SQL 설명서에 참여하세요
SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 직접 편집하여 설명서를 개선하고, 페이지에 기여자로 참여하세요.
자세한 내용은 SQL Server 설명서에 기여하는 방법을 참조하세요