VirtualBox에 더 많은 "코어"를 할당하면 어떤 이점이 있습니까?


40

VirtualBox가있는 2.8 쿼드 코어 i7이 있습니다. 게스트 컴퓨터에 최대 4 개의 코어를 할당 할 수 있지만 2 개만 수행했습니다. 게스트에 더 많은 코어를 할당 할 때의 장점 / 단점은 무엇입니까? BTW, 나는 여전히 2 개의 게스트 OS (Win 7 및 Ubuntu)를 실행하면서 Ultra 설정에서 StarCraft 2를 계속 재생할 수 있으며 BFBC2 (내 스트레스 테스터)와 동일합니다. i7은 코어에 걸리는 고르지 않은 하중에 어떻게 반응합니까?

답변:


62

VM에 할당 한 "가상"코어는 클라이언트 OS 내에서 다중 처리에 사용할 수 있습니다. 하나의 코어 만 VM에 할당하면 게스트 OS가 여러 코어에로드를 분산시킬 가능성이 없습니다. 실제 시나리오를 가정 해 봅시다 :

CPU가 4 개인 호스트, 게스트에 1 개의 CPU 할당

  • 4 개의 물리적 코어를 실행하는 호스트 시스템
  • VM 내의 클라이언트 OS에 1 개의 코어가 할당 됨

이 경우 게스트 OS는 하나의 코어 만 사용할 수 있습니다. 따라서 여러 코어에서 잘 확장되는 멀티 스레드 응용 프로그램을 실행하면 여전히 하나의 코어에서만 실행됩니다. 따라서 게스트 OS의 모든 스레드는 하나의 물리적 코어를 공유해야합니다.

이 설정에서 게스트 OS를 실행하여 CPU를 완전히로드하면 ~ 25 %의 호스트 OS CPU로드가 발생합니다 (호스트에로드 된 4 개의 코어 중 하나).

물론 호스트 OS 내에서 CPU 소비 작업을 계속 실행하고 나머지 3 개의 코어를 사용할 수 있습니다.

4 개의 CPU가있는 호스트, 4 개의 CPU가 할당 된 게스트

  • 4 개의 물리적 코어를 실행하는 호스트 시스템
  • VM 내의 클라이언트 OS에 4 개의 코어가 할당 됨

이 경우 게스트 VM 내에서 확장 성이 뛰어난 다중 스레드 응용 프로그램을 실행하여 4 개의 가상 CPU를 모두 사용할 수 있습니다. VirtualBox는 4 개의 물리적 코어를 사용하여 VM 내에서 예약 된 작업을 처리하므로 호스트 CPU로드가 최대 100 % 사용량에 도달 할 수 있습니다.

어떤 설정을 선택해야합니까?

이 질문에 대한 답변은 무엇을하고 싶은지에 달려 있습니다. 경우에 따라 모든 코어를 VM에 할당하거나 심지어 각 CPU에 할당 된 전체 양의 CPU를 가진 여러 VM을 실행하는 것이 유용 할 수 있습니다. 이러한 경우 VM은 호스트의 전체 처리 능력을 완전히 활용할 수 있습니다. 실제로 존재하는 것보다 많은 CPU가 VM에 할당 된 경우 VM은 다른 VM에 대한로드의 영향을받습니다. 이를 방지하기 위해 일부 코어를 특정 VM에 전용 할 수 있습니다. 예를 들어 4 개의 코어 노드에 각각 2 개의 CPU가 할당 된 2 개의 VM을 실행하면 각 VM이 2 개의 전용 CPU를 얻는 데 도움이 될 수 있습니다 (처리 능력의 일부를 담당하는 호스트 OS에 의해 부과되는 부하가 없다고 가정).

모든 코어를 VM에 할당하는 것이 호스트에 부정적인 영향을 미칩니 까?

다시 이것은 소프트웨어 실행에 달려 있습니다. 유휴 상태 인 VM을 실행하면 (CPU를 많이 사용하는 프로그램이 전혀 실행되지 않음)이 VM이 부과하는로드는 0 %에 가까워집니다. 10 개의 VM을 병렬로 실행할 수 있으며 모든 VM이 유휴 상태 인 경우 호스트 CPU로드가 0 %에 가깝습니다.

CPU가 고르지 않은로드에서 어떻게 작동합니까?

CPU로드 분배는 스케줄러라는 OS 특정 내장 구성 요소에 따라 크게 달라집니다. Windows XP의 경우 스케줄러는 모든 CPU 코어를 라운드 로빈로드하려고했습니다. 따라서 쿼드 코어 CPU에서 전체로드로 단일 스레드 작업을 실행하면 각 코어에서 ~ 25 %의로드가 발생합니다.
불행히도 이것은 최신 CPU 전원 관리에 나쁜 것으로 판명되었습니다. 최신 시스템의 경우 두 번째 코어가 참여하기 전에 하나의 단일 코어가 최대 100 %까지로드되는 것이 유리합니다. 그 이유는 하나의 코어를 완전히 사용하기에 충분한 부하가없는 한 다른 코어는 에너지를 절약하고 열 손실을 줄이기 위해 수면 모드로 유지 될 수 있기 때문입니다.

Intel Core i-Series 및 최신 AMD (Bulldozer)와 같은 일부 CPU의 경우 코어의 서브 세트 만 사용하는 경우 사용되지 않는 코어가 꺼 지므로 더욱 흥미 롭습니다. 이것은 CPU의 전력 소비를 줄입니다. (인텔과 AMD) 모두 열 및 전력 소비 예산을 사용하기 시작한 후 활성 코어를 오버 클로킹합니다. 따라서 단일 스레드 응용 프로그램 (작업을 동시에 수행하기 위해 여러 코어에 배포 할 수 없음)이 향상 될 수 있습니다. 그러나 모든 코어가 활성화되면 "부스트"기술의 대부분은 "모든 코어 활성화"상황이 CPU가 설계된 상황이기 때문에 처리 능력에 거의 영향을 미치지 않습니다.

따라서 코어 i7은 단일 코어의 불균일 한로드를 매우 잘 처리하고 단일 스레드 응용 프로그램의 성능을 향상시킬 수도 있습니다. 그러나이 부스트는 몇 퍼센트 범위 내에 있지만 실제로 여러 CPU 코어에로드를 분배 할 수있는 멀티 스레드 응용 프로그램은 최적의 경우 요인 (듀얼 코어의 x2, 쿼드 코어의 4x ...)에 의해 향상 될 수 있습니다. . 따라서 멀티 스레딩은 클록 강화와 결합 된 단일 스레딩보다 CPU 성능을 결합하여 항상 더 많은 전력을 제공합니다.


1
와우, 그것은 그것이 멀티 코어 동작을 이해하는데 도움이됩니다.
Dan Allen

2
Macbook Air (2GHz i7 듀얼 코어 포함)에서 Ubuntu 12.04 LTS 클라이언트가 느리게 실행되는 데 문제가있었습니다. 나는 클라이언트의 설정을 두 개의 CPU로 올렸고 이제는 불타고 있습니다. 최적화되지 않은 설정의 경고 메시지를 무시하고 있습니다.
Mike Graf

VirtualBox는 코어를 사용하지 않고 프로세서를 사용하고 모든 사람이 1 개의 프로세서를 가질 수 있기 때문에 매우 복잡합니다. 쿼드 코어 또는 8 코어 인 경우에도 코어 프로세서를 호출하지 않는 한?
SSpoke

0

VB 사이트의 매뉴얼을 자세히 다루지 않았지만 게스트 머신에 코어를 할당하면 게스트 OS가 여러 코어를 볼 수 있으므로 추가 코어를 활용할 수있는 응용 프로그램에 추가 속도 / 호스트 OS와 동일한 전력 / 효율.

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