16 개의 코어 / 프로세서가있는 2 개의 프로세서 컴퓨터에서 SQL Server 2012의 CPU 사용률이 매우 고르지 않음


8

Server + Cal 라이센스 모델을 사용하여 SQL Server Enterprise 2012를 설치 한 후 각각 16 개의 코어가있는 2 개의 프로세서가있는 컴퓨터 (하이퍼 스레딩은 포함되지 않음)에 서버의 부하가 매우 큰 경우 첫 번째 프로세서의 16 개 코어의 활용률이 매우 낮습니다. 두 번째 CPU의 첫 4 개 코어가 많이 사용되었으며 마지막 12 개 코어는 전혀 사용되지 않았습니다 (이 SQL Server 버전의 20 개 코어 제한으로 인해). 총 CPU 사용률은 약 25 %로 표시되었습니다. 불행히도, 작업이 20 개의 코어에 골고루 분산되어 있어도 서버 성능이 크게 저하되었습니다.

Windows Server가 ESX Server의 VMWare 가상 이미지에서 실행 중이지만 모든 CPU가 Windows 서버에 할당되었습니다.

선호도 설정 (예 : 대부분의 코어를 CPU에 할당하고 다른 코어를 I / O에 할당)을 변경하려고 시도했지만 성능 문제를 해결하는 데 도움이되지 않았습니다.

제품 버전을 SQL Server Enterprise Core 2012로 업그레이드하면 SQL Server에서 이전에 사용하지 않은 12 개의 코어를 두 번째 프로세서에서 활용할 수있을뿐만 아니라 모든 프로세서에 훨씬 더 많은 작업을 배포 할 수있었습니다. 요청의 백 로그를 해결하기 위해 cpU 사용률은 약 90 %로 급증한 후 발견되면 약 33 %로 떨어졌지만 새로 업데이트 된 버전으로 장애 조치를 수행 한 후 성능이 크게 향상되었습니다.

12 코어가 유휴 상태 인 두 번째 프로세서의 첫 번째 4 코어에 거의 독점적으로 의존하여 SQL Server 가로 드를 불균등하게 분산시킬 수있는 원인을 아는 사람이 있는지 궁금합니다. 첫 번째 16 코어 각각에 몇 가지 작업 만 할당하십시오. 프로세서. 또한 제품 에디션 업그레이드없이 사용중인 20 개 코어에로드를보다 균등하게 분배 할 수있는 방법이 있습니까?

이 질문의 단점은 SQL Server가 인식 한 모든 코어에로드를 균등하게 분배하기 시작한 제품 업그레이드의 기능입니다.

이러한 질문 및 / 또는 링크에 대한 통찰력 덕분에 무슨 일이 있었는지 이해하는 방법을 더 잘 이해할 수 있습니다.


문제의 머신이 32 개의 vCPU가있는 VM이라고 말하고 있습니까? 두 시나리오 모두에서?
mfinni

예, 각각 16 개의 코어가있는 2 개의 프로세서가있는 동일한 시스템이었습니다 (하이퍼 스레딩은 포함되지 않았습니다).
cooplarsh

1
왜 여호와의 이름으로 32 개의 vCPU가 있습니까? 그걸 줄이려고 했어? ESXi가 CPU의 갱 스케줄링을 개선했다는 것을 알고 있지만 많은 문제가 있습니다. 현재 사용중인 ESXi 버전과 기본 하드웨어는 무엇입니까?
mfinni

답변:


4

불균일 한 성능은 20 코어 제한과 SQL Server가 NUMA 시스템에서 스레드를 예약하는 방식과 결합 된 것입니다. 불행히도 SQL Server 2012는 사용할 20 개의 코어를 결정하는 데 지능을 사용하지 않으므로 NUMA 노드 당 코어 수가 불균형합니다. 32 개의 코어가 2 개의 NUMA 노드에 분산되면 16/4 분할로 끝날 것입니다. 이것은 SQL이 라운드 로빈 방식으로 NUMA 노드에서 균등하게 활동 균형을 조정하려고 시도하기 때문에 문제가됩니다.

귀하의 경우 1/2의 부하가 4 개의 코어에, 1/2에서 16 개의 코어에 할당됩니다. 4 코어 노드의 병목 현상은 효과적으로 스로틀 역할을하여 시스템 용량을 2x 4 코어 = 8 코어 = 25 % CPU 사용으로 제한합니다.

코어 에디션으로 업그레이드 한 후 sql은 2 개의 numa 노드 (16/16 분할)에서 32 개의 코어를 모두 사용했습니다. 성능 향상 등

성능을 향상시킬 수있는 한 가지 옵션은 SQL 서버 리소스 관리자를 사용하여 대부분의 작업 부하를 하나의 numa 노드에 적용하는 것입니다. 예를 들어, 리소스 풀 WEB_APP을 생성하고 16 코어 numa 노드에서만 실행되도록 affinitize 할 수 있습니다. WEB_APP 풀에 할당 된로드는 서버 용량의 50 %와 4 ​​코어 노드의 나머지 12.5 % 용량을 활용할 수 있습니다.

다른 옵션은 SQL 서버에서 사용 가능한 코어가 각 numa 노드에서 10 개로 만 제한되도록하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.