모범 사례 : 물리적 코어 당 vCPU 예를 들어, Intel

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

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



답변

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

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

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

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

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

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


답변

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 제약이되는 경향이 있습니다.


답변

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

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

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

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


답변

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


답변