VM에 노출 된 CPU 코어 수에 대한 최적 설정이 있습니까?


22

VirtualBox 및 다른 VM 소프트웨어를 사용하여 사용자는 VM에 노출 된 CPU 수를 지정할 수 있습니다. 필자는 Windows 7 64 비트가 기본적으로 실행되는 듀얼 코어 CPU와 VM으로 Ubuntu 9.04 64 비트를 사용합니다.

도움말 파일은이 값을 사용 가능한 물리적 코어의 수 위에 설정하지 않는 것이 좋습니다. 이것은 의미가 있습니다. 그렇다면 1 또는 2 개의 CPU 코어를 할당하는 것이 가장 좋습니다. 이것은 전적으로 CPU 부하에 좌우됩니까?

답변:


5

그것은 전적으로 게스트 OS가하는 일에 달려 있습니다. 내 개인적인 경험으로 VM은 단일 프로그램 (서버, trac 서버, SVN 등을 빌드)을 실행하므로 하나 위에 설정해야 할 이유가 없습니다.

가능한 경우는 게스트 OS를 쓰레기 (즉, TA)로 사용하는 대학에서 최종 사용자 인 경우 1 세 이상으로 설정할 수 있습니다.


즉, 임시 시스템의 경우 CPU 코어 할당량을 최대한 늘릴 수 있습니다. "일반적인"또는 일반적인 사용을 위해 하나의 코어로 설정하십시오 (호스트 OS의 성능에 너무 간섭하지 않도록)?
sblair

17

이 대답의 정보가 더 이상 올바르지 않습니다. . 엄격한 공동 스케줄의 시대에는 정확했지만 더 이상 그렇지 않습니다.

번영을 위해 아래에 답을 남기고 있지만, 현대 하이퍼 바이저에게는 정확한 대답을 의탁하지 마십시오.


너는해야한다. 모든 코어를 가상 시스템의 vCPU로 할당하십시오.

VM이 요청할 경우 어떤 CPU 시간, VM웨어 있다 둘 중 하나를 할당한다. 모든 vCPU 또는 없음 vCPU의

이것이 의미하는 바는 4 코어 시스템에서 4 개의 코어를 모두 할당하면 호스트 또는 게스트 중 하나만 프로세서 시간을 할당받을 수 있고 둘 다를 동시에 할당 할 수는 없습니다.

이것은 두 환경에서 절대적으로 성능을 망칠 것입니다.

홀수 개의 코어 (예 : 3)를 자유롭게 할당하십시오. 이상하게 느껴지 긴하지만 그것은 완전히 합법적 인 선택입니다.

일반적으로 (n / 2) 개 이상의 vCPU를 할당하지는 않지만 (실제로는 2 개) - 일반적으로 12 ~ 32 코어의 서버에 코어를 할당하면 큰 영향을 미치지 않고 많은 수의 vCPU를 할당 할 수 있습니다.


이것은 지금까지 어느 정도의 권한으로 작성된 유일한 대답입니다. 귀하의 경험을 공유해 주셔서 감사합니다.
G-Wiz

5
-1 : 내 경험과 일치하지 않습니다. VM은 CPU 시간이 호스트의 다른 프로세스와 동일한 방식으로 예약 될 수있는 프로세스입니다. 호스트에서 VM 프로세스의 우선 순위를 조정할 수 있으며 시스템은로드 균형을 적절하게 조정합니다.
bwDraco

2
( 계속되는 ) 16 코어 서버가 있다고 가정 해 보겠습니다. 구성 예는 각각 8 개의 코어로 구성된 4 개의 VM입니다. 가상 코어가 너무 많아 보이지만 개별 VM을 더 많은 작업 부하에서 더 잘 확장 할 수 있습니다. 조합 된 사용이 실제 코어의 수를 초과하면 호스트는 그에 따라로드의 균형을 조정합니다. 가상화가 호스트 하드웨어를 최대한 활용하여 처리량을 높이고 비용을 절감하는 방법입니다.
bwDraco

@DragonLord -이 답변은 거의 4 살이되는 질문으로 2 세 이상이며 구식 정보를 기반으로합니다. ESX의 "Strict Co-Scheduling"에 대해 언급하고 있지만 정보가 얼마나 오래되었는지를 기억하지 못하고 있으며 지난 몇 년 동안 CPU 스케줄링이 어떻게 바뀌 었는지 최신 정보를 얻지 못했습니다.
Mark Henderson

1
우분투 14.04와 16.04 모두에서 CPU 수를 홀수로 설정하면 충돌 문제는 물론 부팅 문제가 있다는 메모를 여기에 표시하려고합니다. 왜 문제를 피하기 위해 단순히 숫자를 짝수로 유지하기로 결정했기 때문에 그 이유를 알 수 없었습니다.
Dorian

3

게스트 CPU에 노출 된 코어의 수는 원하는만큼 성능에 영향을 미치지 않습니다. 게스트 CPU가 "보게되는"코어의 양을 조정합니다.

에뮬레이터 설정 방법에 따라 말 그대로 가상 시스템의 성능의 절반이나 아무 것도하지 않거나 게스트 OS / 응용 프로그램이 스레드 스케줄링을 분할하는 방식에만 영향을 줄 수 있습니다.

기본값으로 두는 것이 가장 좋습니다. 호스트 PC에서 성능 문제가 발생하면 Windows 작업 관리자를 사용하여 프로세스 우선 순위를 간단히 조정할 수 있습니다.


3

Nate가 언급했듯이 VM이 대부분 단일 스레드 프로세스를 실행하는 한, 둘 이상의 코어를 할당 할 이유가 거의 없습니다.

그러나 더 많은 코어 (멀티 스레드 프로그램, 많은 병렬 프로그램 등)를 활용할 수있는 방법으로 사용할 계획이라면 스토리가 더욱 복잡해집니다. 이전에 VM 용으로 CPU의 절반을 사용하는 것이 좋은 생각이라고 생각했습니다. 이것이 항상 최적이라고는 볼 수 없습니다.

확실히 할 수있는 유일한 방법은 벤치 마크를 실행하는 것입니다. 왜 그런지 모르지만 Core2 Quad 시스템 (VT-x 지원, 중첩 된 페이징, ..)에서 실제로 4 코어 중 1 개를 사용하면 성능이 향상됩니다 2 개 이상의 코어를 사용하는 것보다! 이 작업은 VM의 시작 시점과 컴파일 벤치 마크에서 볼 수 있습니다.

다른 하드웨어 결과는 다릅니다. 또한 i7에 8 개 코어가 있고 성능이 코어 수와 함께 더 좋게 조정됩니다 (4 개를 행복하게 사용함).

팁 : 새로운 하드웨어를 먼저 벤치마킹하십시오.


1

OS의 스케줄러를 신뢰하고 VM을 실제 코어 수로 설정합니다. VM에서 사용 중일 때 항상 호스트가 유휴 코어를 갖기를 원한다면.


1

이는 실제 시스템뿐만 아니라 가상 시스템에서도 수행하려는 작업에 따라 다릅니다. 호스트 운영 체제를 다른 작업에 사용하는 동안 가상 시스템을 사용해야하는 경우 VM에 두 개의 프로세서 코어를 사용하여 VM이 최대 부하에 도달하면 호스트에 두 개의 코어가 남아있게하는 것이 좋습니다. 반면에 VM에서 주로 작업하는 경우 모든 프로세서 코어를 사용할 수 있습니다.

그러나 게스트가 4 개의 코어를 모두 동시에 사용할 수 없다면 호스트 OS에서 계속 작업하면서 게스트를 모두 안전하게 사용할 수 있습니다. VM 프로세스가 호스트 운영 체제에서 실행되는 동안 항상 VM 프로세스의 우선 순위를 조정할 수 있으므로 시스템은 그에 따라로드 균형을 조정합니다.


이것은 VirtualBox에 대한 나의 경험을 기반으로합니다. VMware 제품에 익숙하지 않으므로 잘못되었을 수 있습니다. 그렇다면이 대답을 삭제하겠습니다.
bwDraco

0

예, 나는 그것이 달려 있다고 말하고 싶습니다. 그러나 나는 내가하고 싶은 것을 말할 것이다. 직장에서 저는 쿼드 코어 CPU를 가지고 있습니다. 그래서 내 가상 이미지 (win7)에 두 개의 CPU를 할당했습니다. 그런 식으로 호스트 컴퓨터와 가상 컴퓨터를 동시에 사용할 수 있으며 각각 동일한 CPU 리소스를 사용할 수 있습니다.

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