모범 사례 : 물리적 코어 당 vCPU


27

CPU의 물리적 코어 당 vCPU 프로비저닝과 관련하여 가상화에 대한 몇 가지 설명서 또는 모범 사례 가이드를 찾으려고합니다. 중요한 경우 가상화 구현을 위해 vmWare를 찾고 있습니다. 예를 들어, Intel Xeon CPU에는 4, 8 등의 코어가있을 수 있습니다. 하나의 물리적 코어 당 하나의 vCPU를 넘어서 프로비저닝에 대해 더 배우고 싶습니다. 제가 이야기하려는 공급 업체는 단일 코어를 여러 vCPU에 프로비저닝 할 수 있다고 생각합니다.

지금까지 필자의 연구에서 흔히 볼 수있는 것은 "글쎄, 응용 프로그램에 따라 다릅니다." 이 경우 내 응용 프로그램은 코드 편집, 컴파일 / 링크, 테스트 및 구성 관리입니다. 물론 모든 VM을 코어 당 여러 vCPU로 구성해야하는 것은 아니지만 일반적인 경우입니다.

답변:


24

하나의 물리적 CPU를 여러 vCPU로 활용할 수 있습니다. 가상화 솔루션에서 CPU 리소스가 부족한 경우는 거의 없습니다. RAM과 스토리지는 항상 제한 요소입니다 ...

메가 헤르츠가 아닌 코어를 사용 당신이 100 %에 가상 모든 CPU를 동격하지 않는 한 기억, VM웨어의 CPU 사용률이 ... 표시되는 모든 시간 , 나는 당신의 공급 업체가 올바른지 생각하지 않습니다.

다음 시스템 클러스터를 살펴 보겠습니다 ...

  • ESXi 호스트 9 개
  • 160 개의 가상 머신
  • 클러스터에서 104 개의 물리적 CPU 코어
  • 평균 가상 머신 프로파일은 4 vCPU 및 4GB-18GB RAM입니다.
  • CPU는 안전하게 초과 구독 할 수 있지만 VM 수준에서 제한, 예약 및 우선 순위 를 지정할 수도 있습니다 .

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

다른 활성 클러스터에서-3 개의 호스트 42 개의 가상 머신 여기에 이미지 설명을 입력하십시오


4
3936 vMotion 마이그레이션을 본 후 1,200
Mark Henderson

2
어제 VM 클러스터에서 통계를보고 있었는데 @ewwhite에서 제공 한 수치를 보여줍니다. 총 24 개의 프로세서와 55GHz의 3 개의 호스트가 있습니다. 총 79 개의 vCPU가 할당 된 59 개의 VM이 있습니다. vSphere 통계에 ​​따르면 지난 6 개월 동안 평균 14GHz 이상 (최소 9GHz, 최대 25GHz) 이상을 사용했으며 그 동안 CPU 코어 수 경합이 0이었습니다.
폴 기어

7

ewwhite의 쓰기 기능을 확장하기 위해 여러 vCPU 또는 vCPU 당 여러 코어를 명시 적으로 활용할 수있는 응용 프로그램이없는 경우 여러 vCPU / 코어를 VM에 할당하면 이점이 전혀 없습니다. 실제로, 여러 vCPU를 실행하는 데 필요한 스케줄링 오버 헤드로 인해 하나의 코어가 할당 된 단일 vCPU에서 실행하는 대신 성능이 저하되는 경우가 종종 있습니다.

FWIW의 VDI 설정에서 자주 인용되는 숫자는 물리적 코어 당 5 개의 vCPU입니다. 물론 그것은 사무용 데스크탑을 고려하고 있습니다. VM이 항상 코드를 컴파일하는 데 바쁘면 물리적 코어 당 5 개의 vCPU를 맞추지 못할 수 있습니다.

많은 사람들이 "의존"이라고 말하는 이유는 실제로 그렇게하기 때문입니다. CPU Ready 값을보고 특정 시스템에 더 많은 CPU로드를 넣을 수 있는지 여부를 결정하십시오. CPU Ready는 명령을 실행할 준비가되어있는 vCPU를 측정 한 것으로 실제 CPU 시간을 사용할 수있을 때까지 기다려야합니다.

귀하의 경우 큰 프로그램을 컴파일하는 경우 VM에 실제로 많은 CPU 시간이 필요할 수 있습니다. ewwhite가 지적했듯이, 일반적으로 가상화는 CPU 제약이 아닌 디스크 I / O 및 RAM 제약이되는 경향이 있습니다.


13
absolutely zero benefit in allocating multiple vCPUs/cores to a VM-완전히 정확하지는 않습니다. 우리는 매주 중단되는 단일 스레드 응용 프로그램을 가지고 있습니다. 단일 vCPU가 100 % 인 경우 해당 시스템에 액세스 할 수 없었으므로 VM의 하이퍼 바이저 수준을 재설정해야했습니다. 우리는 두 번째 vCPU를 추가했으며 앱이 중단되면 문제가되는 스레드를 쉽게 가져 와서 죽일 수있었습니다. 이것은 약간의 경우에 해당하지만 절대 절대로 다룰 수는 없습니다.
Mark Henderson

4
Mark가 작성한 것은 필요한지 여부에 관계없이 두 개의 코어를 모든 VM의 하한으로 사용하는 이유입니다.
Nils

2
준비된 가치는 호스트를 초과 프로비저닝하는 경우 가장 좋은 방법이며 준비된 가치는 가능한 낮아야합니다. VM이 CPU주기를 사용하기 위해 "준비"한 시간은 %이지만 CPU가 다른 작업으로 바쁠 때까지 기다려야합니다. vm에 많은 코어를 제공하는 것이 성능에 영향을 줄 수있는 이유를 설명하기 위해 간단한 예를 사용하겠습니다. 4 개의 물리적 코어가 있고 4vm의 경우 2 개의 VM이있는 3 개의 VM과 4 개의 코어가있는 1 개의 vm이있는 경우 작은 VM이 실제로 얻을 수 있습니다 배수에 더 잘 맞을 수 있기 때문에 더 많은주기. 당신이 vcpus와 가능한 한 보수적으로 가십시오!
Rqomey

@ MarkHenderson 나는 그것이 어떻게 유익 할 수 있는지, 그리고 컴파일러와 함께 일한 이후 질문을 한 사람에게 잠재적으로 일어날 수있는 것을 볼 수 있습니다.
Reality Extractor

@Nils 비즈니스 요구가 있는지 여부에 관계없이 모든 VM 2 코어를 제공하는 것은 정말 나쁜 생각이라고 생각합니다. Rqomey가 작성한 것 때문에 수많은 다른 방법, 슬롯 크기, 재시작 / 페일 오버에 사용할 수있는 코어가 충분하지 않음, 성능 저하 등 여러 가지면에서 쉽게 부정적인 영향을 줄 수 있습니다. vCenter와 DCUI를 통해 항상 VM에 액세스 할 수 있습니다.
현실 추출기

3

근본적인 문제는 기본적으로 물리적 시스템에서의 프로세스 스케줄링과 동일합니다. 시스템로드가 코어 수 (또는 하이퍼 스레딩의 경우 논리 프로세서)보다 적 으면 모든 것이 정상이며 프로세서가로드를 처리 할 수 ​​있습니다.

사용 된 모든 vCPU의 동시로드가 실제 코어에서 처리 할 수있는로드를 초과하지 않는 한 모든 것이 좋습니다.

요구 사항에 대해서만 컴파일은 CPU에 집중적 인 작업으로, 때때로 필요합니다. 컴파일러 -VM의 경우 가능한 많은 CPU를 할당합니다. 따라서 컴파일해야 할 경우 가능한 한 빨리 수행됩니다 (컴파일러가 병렬 컴파일을 지원하는 경우).

일정한 부하를받는 컴파일러 -VM (예 : 컴파일을 위해 인터넷 서비스를 제공하고 지속적으로 사용되는 경우)에는 해당되지 않을 수 있습니다.


2

필자가 경험 한 한 가지 규칙 (VMware 설명서에 있음)은 호스트에 실제로 존재하는 것보다 더 많은 코어를 VM에 할당하지 않는 것입니다. 단일 코어에서 여러 vCore가 에뮬레이션되어 불필요한 오버 헤드가 발생하기 때문입니다.


1
그 반대는 어떻습니까? 6 코어 Xeon이 있고 VM에 4 개의 코어 만 할당하면 어떻게됩니까? 그렇다면 성능은 어떻습니까? VM 시스템은 6 개의 물리적 코어 모두에서 전력을 수확 할 수 있습니까? 아니면 4로 제한됩니까?
Overmind

4 개의 코어 만 제공하면 한 번에 4 개의 코어에만 액세스 할 수 있습니다. 그러나 피닝을 구성하지 않으면 4 개의 가상 코어가 6 개의 물리적 코어 중 4 개에 할당 될 수 있다는 것을 이해합니다 (확인되지 ​​않음).
Paul Gear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.