우리 IT는 내가 요청한 4 개가 아닌 2 개의 CPU가 할당 된 VM을 만들었습니다. 그 이유는 VM이 4 개가 아닌 2 개의 CPU로 성능이 더 우수하기 때문입니다. 이론적 근거는 VM 하이퍼 바이저 (이 경우 VMWare)는 CPU를 사용하기 전에 모든 CPU가 사용 가능할 때까지 대기한다는 것입니다. 따라서 CPU 2 개가 아닌 4 개를 기다리는 데 시간이 더 걸립니다.
이 말이 의미가 있습니까?
우리 IT는 내가 요청한 4 개가 아닌 2 개의 CPU가 할당 된 VM을 만들었습니다. 그 이유는 VM이 4 개가 아닌 2 개의 CPU로 성능이 더 우수하기 때문입니다. 이론적 근거는 VM 하이퍼 바이저 (이 경우 VMWare)는 CPU를 사용하기 전에 모든 CPU가 사용 가능할 때까지 대기한다는 것입니다. 따라서 CPU 2 개가 아닌 4 개를 기다리는 데 시간이 더 걸립니다.
이 말이 의미가 있습니까?
답변:
이것은 사실이지만 더 이상 독점적으로 사실이 아닙니다.
그들이 말하는 것은 Strict Co-Scheduling 입니다.
가장 중요한 것은 엄격한 공동 예약 알고리즘에서 지연된 vCPU가 있으면 전체 가상 시스템이 공동 중지되는 것입니다. 편안한 공동 예약 알고리즘에서 주요 vCPU는 가장 느린 형제 vCPU에 대한 스큐를 기반으로 자체 중지할지 여부를 결정합니다.
이제 호스트에 4 개의 스레드 만있는 경우 모든 스레드를 할당하는 것이 어리 석습니다. 프로세서 당 2 개의 프로세서와 4 개의 스레드가있는 경우 하이퍼 바이저가 vCPU를 동일한 NUMA 노드에 유지하여 메모리 액세스 속도를 높이기 때문에 단일 프로세서의 모든 내용을 할당하지 않을 수 있습니다. 전체 소켓을 단일 VM에 할당하여이 작업을보다 어렵게 만듭니다 (위 해당 PDF의 12 페이지 참조).
따라서 더 적은 수의 vCPU 가 더 많은 것보다 더 나은 성능을 낼 수 있는 시나리오가 있지만 100 % 사실이 아닙니다.
말과 행동으로 게스트 당 3 개 이상의 vCPU를 거의 할당하지 않습니다. 기본적으로 모든 사람은 작업량이 많은 경우 2를, SQL Server 또는 대량의 일괄 처리 VM 또는 많은 사용자가있는 터미널 서버와 같은 경우 4를 갖습니다.
MAXDOP
설정 이 있다고 가정하면 SQL Server는 4 개의 코어를 모두 효율적으로 사용할 수 있습니다 . 그러나 작업 부하에 따라 과도하게 과세 된 SQL 서버는 종종 데이터베이스 디자인이 잘못되었음을 나타냅니다. 인덱스가 잘못되었거나 클러스터 된 인덱스가 없거나 인덱스가 너무 많거나 최적화가없는 경우가 있습니다 (항상은 아니지만 자주).
이것은 기본 하이퍼 바이저와이를 실행하는 관리자에 따라 크게 다릅니다.
이것으로부터 무엇을 배울 수 있습니까? 항상 최소한의 리소스로 VM을 만들고 필요에 따라 늘리십시오. 항상 확장하는 대신 항상 확장하면 어디서나 앱을 실행할 수 있습니다.
하이퍼 바이저에서 경험할 수있는 잠금으로 인해 실제로 2 개의 CPU가 4 개의 CPU보다 빠를 수 있습니다.
그렇습니다. 진술은 일반적으로 의미가 있습니다. 그러나 정확한 구성 및 워크로드를 테스트해야합니다. 실제로 활용할 수 있다면 더 많은 CPU가 더 나은 경우가 있습니다. 그러나 실제로 병렬 처리량이 많지 않으면 CPU 수가 적은 구성으로 구성된 VM은 CPU 준비 상태 일시 중지로 인한 속도 저하를 피하기 위해 약간 더 나은 성능을 발휘합니다.
여러 VM에서 vCPU를 줄였으며 대부분 처리량이 향상되었습니다. 소수가 악화되어 vCPU 수를 늘려야했습니다.