CPU 코어 불일치 방지 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CPU 코어 불일치 방지

라이선스가 지원하는 것보다 코어 수가 많은 서버를 선택하면 CPU 왜곡이 발생하여 CPU 성능이 낭비될 수 있습니다. 이는 논리적 코어와 실제 코어 사이의 매핑 때문입니다. SQL Server를 CAL(클라이언트 액세스 라이선스)과 함께 사용하면 일부 스케줄러는 VISIBLE ONLINE이 되고 나머지는 VISIBLE OFFLINE이 됩니다. 이로 인해 스케줄러 노드가 최적으로 활용되지 않아 NUMA(비균일 메모리 액세스) 토폴로지에서 성능 문제가 발생할 수 있습니다.

예컨대, m5.24xlarge 인스턴스에서 SQL Server를 실행하면 코어가 24개인 소켓 2개와 소켓당 논리 프로세서 48개가 검색되어 총 96개의 논리 프로세서가 생성됩니다. 48코어에 대한 라이선스만 보유한 경우, SQL Server 오류 로그에 다음과 비슷한 메시지가 표시됩니다.

2020-06-08 12:35:27.37 Server SQL Server가 SQL Server 라이선스를 기준으로 48개의 논리적 프로세서를 사용하여 소켓당 24개의 코어와 소켓당 48개의 논리 프로세서가 있는 소켓 2개, 총 96개의 논리 프로세서를 감지했습니다. 이는 정보를 제공하는 메시지임; 사용자 조치가 요구되지 않음.

총 코어 수와 SQL Server에서 사용 중인 코어 수 사이에 차이가 있는 경우, CPU 사용량 불균형을 확인하거나 라이선스가 지원하는 코어 수와 같은 서버 타입을 사용하십시오.

CPU 스큐: 예(m5.24xlarge)의 인스턴스 타입에 대해 SQL Server는 기본적으로 8개의 NUMA 노드를 생성합니다. 이러한 노드 중 4개(상위 노드 ID 0,1,2,3)에만 VISIBLE ONLINE 상태의 스케줄러가 있습니다. 나머지 스케줄은 모두 VISIBLE OFFLINE입니다. 스케줄러들 사이의 이러한 차이는 성능 저하로 이어질 수 있습니다.

스케줄러 정보 및 상태를 확인하려면 다음을 사용하십시오.

$ select * from sys.dm_os_schedulers

SQL Server 라이선스에서 지원하는 것보다 많은 수의 코어가 있는 서버 인스턴스를 사용하려면 Amazon EC2 설명서의 인스턴스를 위한 CPU 옵션 지정에 나와 있는 지침에 따라 코어 수를 맞춤하는 것이 좋습니다.