Hyper-V 호스팅 VM의“논리 프로세서 수”를 늘리면 해당 VM의 성능이 향상되는 이유는 무엇입니까?


9

내가 알기로는 가상 머신 ( Relative Weight균등 하다고 가정) 은 프로세서의 동등한 점유율을 얻습니다.

VM에 처리 시간이 주어지면 Hyper-V 호스트의 프로세서 배열에서 처리가 이루어 지므로 VM에서 사용할 단일 코어 또는 여러 코어를 볼 수 있는지 여부는 중요하지 않습니다. 그러나 Number of logical processors특정 VM에 대해 Hyper-V에서 설정을 1에서 4로 설정하면 성능이 크게 향상됩니다.

현재 설정에 대한 사양은 대략 다음과 같습니다.

  • Hyper-V 호스트에는 32GB RAM, 24 개의 논리 프로세서 (잘못된 단어?), 몇 TB의 공간이 있습니다.

  • VM에는 6GB RAM, 1 개 또는 4 개의 코어, 수백 GB의 공간 및 2008 R2가 실행됩니다.

과거 Hyper-V 설정에서 비슷한 것을 경험했습니다.

답변:


20

내가 아는 모든 하이퍼 바이저의 가상 머신은 추가 가상 CPU를 사용하여 추가 동시 스레드 실행을 예약 할 수 있습니다.

물리적 시스템과 가상 시스템 간의 추상화 계층은 정확하게 설명 된 방식으로 작동 하지 않습니다 . VM은 실제 머신의 코어 수를 인식하지 못합니다. VM은 물리적 시스템의 물리적 CPU (또는 코어)를 "보지"않습니다. 하이퍼 바이저는 VM에 가상 CPU 수를 제공하고 게스트 OS는 해당 가상 CPU를 사용하여 추가 동시 스레드를 예약합니다. 하이퍼 바이저가 가상 시스템에 전달하는 총 가상 CPU 수는 물리적 CPU 수 / 기계의 코어.

다른 방법으로, 가상 시스템은 단일 vCPU가 할당 될 때 하나의 CPU 만있는 것처럼 스레드를 예약합니다. 기본 물리적 시스템에 몇 개의 코어가 있는지는 중요하지 않습니다. (물리적 시스템은 하나의 스레드 퀀텀 또는 타임 슬라이스에 대해 하나의 물리적 코어에서 하나의 VM 스레드를 예약 한 후 다음에 실행되도록 예약 할 때 다른 물리적 코어에서 실행할 수 있습니다. 알고있는 것은 하나의 가상 CPU 만 있기 때문에 한 번에 하나의 스레드 만 하나씩 예약 할 수 있다는 것입니다.)

그리고 우리의 용어에 대해 매우 명확하게합시다. "코어"가 아닌 VM에 vCPU 또는 가상 CPU를 할당합니다. 코어 (단일 물리적 소켓을 공유하는 물리적 처리 장치를 의미한다고 가정)는 vCPU와 같지 않습니다. 그들 사이에는 추상화 계층이 있습니다. VM에 vCPU가 하나만 할당되어 있으면 한 번에 하나의 스레드 만 실행되도록 예약 할 수 있습니다. 따라서 2-4 개의 가상 CPU가 할당 된 상태에서 VM이 더 빠르게 실행됩니다. 이제 동시에 실행되도록 둘 이상의 스레드를 예약 할 수 있습니다.

그러나 너무 많은 수의 가상 CPU가 동기화 등과 같은 작업에서 오버 헤드 비용이 높고 높기 때문에 수익을 줄이는 법이 분명히 있습니다.

Hyper-V와 VMware 하이퍼 바이저가 실행을 위해 가상 머신 스레드를 예약하는 방법에는 약간의 차이가 있으며 물리적 리소스 "과다 가입"에 대한 접근 방식이 다릅니다. 그러나 이는 일반적으로 좋은 개념입니다.


7
@ Flapjack00 아니요. 방금 말한 것과 정반대입니다. 그리고 우리의 용어에 대해 매우 명확하게합시다. "코어"가 아닌 VM에 vCPU 또는 가상 CPU를 할당합니다. 코어 (단일 소켓을 공유하는 물리적 처리 장치를 의미한다고 가정)는 vCPU와 같지 않습니다. 그들 사이에는 추상화 계층이 있습니다. VM에 vCPU가 하나만 할당되어 있으면 한 번에 하나의 스레드 만 실행되도록 예약 할 수 있습니다.
Ryan Ries

1
아! 따라서이 경우 4 개의 vCPU로 구성된 VM은 한 번에 4 개의 스레드를 예약 할 수 있습니다. 호스트에 사용 가능한 vCPU가 충분하다고 가정하면 4 개의 스레드를 동시에 처리 할 수 ​​있습니까?
Blackjack00

1
@ Flapjack00 "호스트에 사용 가능한 vCPU가 충분하다고 가정" -호스트에 vCPU가없고 VM에 있습니다. 호스트에는 vCPU가 할당되는 코어 (또는보다 정확하게는 논리 프로세서-단일 코어에 여러 개의 논리 프로세서가있을 수 있음) 가 있습니다.
BlueRaja

2
@Dan, 이것은 VMware와 관련된 문제입니다. Hyper-V에는 영향을 미치지 않습니다.
Jake Oshins

1
VMware에서 ESX 3.5에서 제거 된 "x vCpu에는 Y CPU 잠금이 필요합니다"가 더 이상 최신 하이퍼 바이저에는 더 이상 적용되지 않습니다. 즉, 불필요한 리소스를 VM에 할당하지 않도록주의해야하며 vCpu가 특히 중요합니다. 너무 많으면 전반적인 성능이 저하됩니다.
pauska

3

할당 된 가상 CPU의 양은 중요합니다. VM에서 실행되는 소프트웨어는 VM에 있다는 사실을 알지 못하며 호스트가 VM에 표시되는 것 이상을 수행 할 수 있습니다. 따라서 하나의 코어 만 할당 된 VM에서 여러 CPU 코어를 활용할 수있는 소프트웨어를 실행하는 경우 소프트웨어는 해당 작업에 대해 하나의 코어 만 예약하며 VM도 하나의 호스트 코어 만 사용합니다. 시간. VM에 더 많은 코어를 제공하면 소프트웨어가 더 많은 병렬 작업을 예약 할 수 있으며 호스트의 CPU가 VM에 대해 예약합니다.

경합을 유발하지 않도록 VM을 너무 많이주지 않도록주의하십시오. 하나의 VM에 호스트보다 많은 가상 코어가있는 경우 VM 자체에 대항하여 VM과 같은 갱 예약 하이퍼 바이저의 경우 VM이 전혀 아무것도 실행할 수 없습니다 (물론 전체 옵션은 관리 계층에 의해 차단됩니다).

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