CPU가 2 개인 VM이 CPU가 4 개인 VM보다 실제로 더 빠릅니까?


67

우리 IT는 내가 요청한 4 개가 아닌 2 개의 CPU가 할당 된 VM을 만들었습니다. 그 이유는 VM이 ​​4 개가 아닌 2 개의 CPU로 성능이 더 우수하기 때문입니다. 이론적 근거는 VM 하이퍼 바이저 (이 경우 VMWare)는 CPU를 사용하기 전에 모든 CPU가 사용 가능할 때까지 대기한다는 것입니다. 따라서 CPU 2 개가 아닌 4 개를 기다리는 데 시간이 더 걸립니다.

이 말이 의미가 있습니까?

답변:


62

이것은 사실이지만 더 이상 독점적으로 사실이 아닙니다.

그들이 말하는 것은 Strict Co-Scheduling 입니다.

가장 중요한 것은 엄격한 공동 예약 알고리즘에서 지연된 vCPU가 있으면 전체 가상 시스템이 공동 중지되는 것입니다. 편안한 공동 예약 알고리즘에서 주요 vCPU는 가장 느린 형제 vCPU에 대한 스큐를 기반으로 자체 중지할지 여부를 결정합니다.

이제 호스트에 4 개의 스레드 만있는 경우 모든 스레드를 할당하는 것이 어리 석습니다. 프로세서 당 2 개의 프로세서와 4 개의 스레드가있는 경우 하이퍼 바이저가 vCPU를 동일한 NUMA 노드에 유지하여 메모리 액세스 속도를 높이기 때문에 단일 프로세서의 모든 내용을 할당하지 않을 수 있습니다. 전체 소켓을 단일 VM에 할당하여이 작업을보다 어렵게 만듭니다 (위 해당 PDF의 12 페이지 참조).

따라서 더 적은 수의 vCPU 더 많은 것보다 더 나은 성능을 낼 수 있는 시나리오가 있지만 100 % 사실이 아닙니다.

말과 행동으로 게스트 당 3 개 이상의 vCPU를 거의 할당하지 않습니다. 기본적으로 모든 사람은 작업량이 많은 경우 2를, SQL Server 또는 대량의 일괄 처리 VM 또는 많은 사용자가있는 터미널 서버와 같은 경우 4를 갖습니다.


3
가상화 장애물을 제외하고 병렬 처리를 이용하는 소프트웨어를 작성하는 것은 일반적으로 까다 롭습니다. 소프트웨어 사용자가 충분하지 않은 경우 실제로 4 개의 가상 스레드가 4 개의 실행 스레드를 실행하는 1 개의 호스트보다 각각 1 개의 소프트웨어 인스턴스를 실행하는 것이 좋습니다.
Luaan

4
@Luaan이 상자에는 SQL Server가 있으므로 좋은 소프트웨어 사용자가 있다고 가정합니다.
AngryHacker

1
@AngryHacker yes 적절한 MAXDOP설정 이 있다고 가정하면 SQL Server는 4 개의 코어를 모두 효율적으로 사용할 수 있습니다 . 그러나 작업 부하에 따라 과도하게 과세 된 SQL 서버는 종종 데이터베이스 디자인이 잘못되었음을 나타냅니다. 인덱스가 잘못되었거나 클러스터 된 인덱스가 없거나 인덱스가 너무 많거나 최적화가없는 경우가 있습니다 (항상은 아니지만 자주).
Mark Henderson

1
@Luaan 그것은 여전히 ​​병렬 처리입니다. 서로 대화해야 할 경우 대기 시간이 훨씬 길어집니다. :)
reirab

@MarkHenderson 최적화가 잘되어 있지만 일부 워크로드는 너무 커서 2 개의 CPU와 동시에 많은 다른 쿼리로 쉽게 처리 할 수 ​​없습니다.
AngryHacker

15

이것은 기본 하이퍼 바이저와이를 실행하는 관리자에 따라 크게 다릅니다.

  1. 요청한 CPU 4 개를 임의로 제공하는 것은 좋지 않습니다. 일반적으로 말하면 4가 필요 하다고 생각 합니다. 그러나 자원 모니터링에 따르면 1 개만 필요하다고합니다.
  2. 예를 들어 VMware ESXi 는 vCPU가 CPU 리소스를 요청할 때 모든 pCPU를 잠 가야합니다 . 이 하이퍼 바이저에서는 성능이 좋지 않습니다. KVM은 ESXi처럼 잠금을 수행하지 않습니다. 기본 커널 스케줄러를 사용하지만 장기적으로 CPU 경합이 발생할 수 있습니다.
  3. 4 CPU부터 시작하여 시스템을 구축하는 경우 실제로 확장하는 것이 아니라 확장하는 것입니다 (특히 VM에서 나쁜 습관 임). 오늘날의 현대적인 클라우드 인프라에 맞게 확장 할 수 있도록 현재 작업중인 것을 어떻게 설계하고 있는지 확인할 수 있습니다.

이것으로부터 무엇을 배울 수 있습니까? 항상 최소한의 리소스로 VM을 만들고 필요에 따라 늘리십시오. 항상 확장하는 대신 항상 확장하면 어디서나 앱을 실행할 수 있습니다.

하이퍼 바이저에서 경험할 수있는 잠금으로 인해 실제로 2 개의 CPU가 4 개의 CPU보다 빠를 수 있습니다.


4

그렇습니다. 진술은 일반적으로 의미가 있습니다. 그러나 정확한 구성 및 워크로드를 테스트해야합니다. 실제로 활용할 수 있다면 더 많은 CPU가 더 나은 경우가 있습니다. 그러나 실제로 병렬 처리량이 많지 않으면 CPU 수가 적은 구성으로 구성된 VM은 CPU 준비 상태 일시 중지로 인한 속도 저하를 피하기 위해 약간 더 나은 성능을 발휘합니다.

여러 VM에서 vCPU를 줄였으며 대부분 처리량이 향상되었습니다. 소수가 악화되어 vCPU 수를 늘려야했습니다.

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