Info
Content

[번역] Enhanced vMotion Compatibility (EVC) Explained

출처 : https://blogs.vmware.com/vsphere/2019/06/enhanced-vmotion-compatibility-evc-explained.html

vSphere Enhanced vMotion Compatibility (EVC)를 통해 서로 다른 CPU 세대를 실행하는 클러스터의 ESXi 호스트 간에 워크로드를 실시간 마이그레이션할 수 있다. 일반적으로 EVC를 사용하도록 설정하는 것이 좋다. 새로운 CPU 모델이 포함될 수 있는 새 호스트로 클러스터를 확장하는 데 도움이 될 것이기 때문이다. 브라운필드(brownfield) 시나리오에서 EVC를 활성화하는 것은 어려울 수 있다. 그래서 우리는 처음부터 그것을 가능하게 해야 한다고 강조한다. 이 블로그 게시물은 EVC 및 VM당 EVC 기능에 대한 세부 정보를 제공한다.

EVC는 어떻게 작동하는가?

EVC가 동일한 vMotion 호환성을 허용하는 방법은 ESXi 호스트에서 실행 중인 가상 시스템에 CPUID(명령어) 기준선을 적용하는 것이다. 즉, EVC는 선택한 호환성 수준과 지원되는 호환성 수준에 따라 CPU 명령 집합을 VM에 허용하고 노출한다. 새로운 CPU 패키지를 포함하는 새로운 호스트를 클러스터에 추가하는 경우 EVC는 잠재적으로 VM에 새 CPU 명령어를 숨긴다. 이렇게 함으로써 EVC는 클러스터의 모든 VM이 동일한 CPU 명령으로 실행되어 가상 시스템이 ESXi 호스트 간에 실시간 마이그레이션(vMotion)될 수 있도록 보장한다.

EVC는 CPUID를 사용하여 게스트 OS에서 마스킹할 명령어를 결정한다. 기본적으로 CPUID는 CPU용 API로 볼 수 있다. 이를 통해 EVC는 CPU가 수행할 수 있는 명령 집합과 구성된 EVC 기준선에 따라 마스킹해야 하는 명령어를 배울 수 있다. 클러스터에서 EVC를 사용하도록 설정한 경우 클러스터의 모든 ESXi 호스트가 해당 설정을 준수해야 한다.

VMware KB 문서에서는 현재 모든 EVC 기준선과 이 기준선이 VM에 노출되는 CPU 명령어에 대해 자세히 설명되어 있다.

Per-VM EVC

EVC는 클러스터 내에서 VM 이동성을 지원하는 클러스터 수준 설정이다. 가상 시스템을 사내 또는 하이브리드 클라우드 환경 중 하나에서 다른 클러스터로 이동하면 대상 환경에 따라 EVC 구성이 손실된다. 그 다음으로, 실시간 워크로드가 있는 환경에서 클러스터 EVC 기준선을 변경하는 것은 어렵다.

Per-VM EVC를 구현함으로써 EVC 모드는 클러스터에서 부팅되는 특정 프로세서 생성 대신 VM의 속성이 된다. 이는 EVC 지원 및 기준선을 통해 보다 유연하게 사용할 수 있도록 도와준다. 우리는 vSphere 6.7에서 Per-VM EVC 기능을 소개하였다. Per-VM EVC를 사용하려면 VM 하드웨어 버전 14 이상이 필요하다. 가상 시스템의 전원이 꺼진 경우 Per-VM EVC 기준선을 변경할 수 있다.

Enable-perEVC.gif

per-EVC 구성은 vmx 파일에 저장된다. vmx 파일은 VM의 구성을 제공하는 값의 사전으로 사용되는 파일이다. 가상 시스템이 다른 클러스터로 마이그레이션되는 경우, per-EVC 구성은 VM을 따라 이동한다. VM당 EVC가 사용되도록 설정된 경우 vmx 파일에 다음과 같은 featMask.vm.cpuid 줄이 포함된다:

featMask.vm.cpuid.Intel = “Val:1”
featMask.vm.cpuid.FAMILY = “Val:6”
featMask.vm.cpuid.MODEL = “Val:0x4f”
featMask.vm.cpuid.STEPPING = “Val:0”
featMask.vm.cpuid.NUMLEVELS = “Val:0xd”

고객 피드백

최근 트위터 여론조사는 몇 가지 흥미로운 결과와 피드백을 보여주었다. 우리 고객의 80%가 실제로 EVC를 사용하고 있는 것 같다. 그러나 원격 측정 데이터를 살펴보면 EVC 지원 클러스터나 VM의 수는 약간 다른 모습을 보였다. 고객 기반 중 상당 부분이 이미 해당 클러스터 및/또는 VM에서 EVC를 사용하도록 설정하여 EVC로부터 혜택을 받고 있다는 것을 알게 되어 좋다.

논평을 통해, EVC를 기본적으로 활성화하는 것에 대한 일반적인 합의는 다르다. 우리는 많은 고객들이 브라운필드 환경에서 EVC를 활성화하는 것이 어렵다는 것을 알고 있기 때문에 처음부터 EVC를 활성화하는 것을 선택한다. 반면에, 우리는 EVC를 활성화하지 않은 고객들을 본다. 왜냐하면 그들은 동일한 클러스터를 가지고 있고 그것을 활성화 시키는 것의 가치를 보지 않기 때문이다. EVC 기능 자체가 가상 인프라에 오버헤드가 없다는 것을 이해하는 것이 중요하다. 그러나 새로운 CPU 버전을 포함할 수 있는 추가 호스트로 클러스터를 확장하려는 경우 나중에 클러스터 EVC를 사용하도록 설정해야 하는 부담에서 벗어날 수 있다.

고객의 또 다른 고민은 성능에 미치는 영향이다. 구성된 EVC 기준선 때문에 최신 CPU 지침을 사용할 수 없는 워크로드는? 워크로드에 따라 달라지지만 게스트 OS 내에서 실행되는 애플리케이션에 새로운 CPU 명령이 모두 노출되지 않기 때문에 전반적으로 성능에 큰 영향을 미치지 않는다고 본다. 우리는 이 주제에 대해 자세히 설명하는 논문을 발표했다.

VM의 전원이 켜진 라이브 환경에서 EVC를 사용하도록 설정하려면 EVC 구성을 변경하려면 가상 시스템의 전원을 꺼야 한다. VM당 EVC가 도움이 되는 영역이다. VM당 EVC를 자동화된 방식으로 활성화할 수 있는 방법에 대한 Kyle Ruddy의 게시물을 확인하기 바란다.

EVC 구성 확인

사용자 환경과 사용되는 EVC 구성에 대한 통찰력을 얻기 위해 스크립팅을 활용할 수 있다. 다음 조각에서는 클러스터 EVC 수준 옆에 VM과 VM EVC 수준을 포함하는 개요를 생성할 수 있다. 표 형태의 데이터이기 때문에 | ConvertTo-CSV를 추가하여 CSV 파일로 쉽게 내보낸다.

Get-VM | Select Name,HardwareVersion,
@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},
@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},
@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft

이 PowerCLI 명령을 실행하면 EVC가 활성화되었을 때 구성된 EVC 기준선에 대한 통찰력을 얻을 수 있다. 클러스터 EVC 모드가 활성화되면 스크립트에 사용된 기준선이 표시된다. 또한 VM 하드웨어 버전 14 이상에서만 EVC당 사용 가능하므로 VM 하드웨어 버전도 표시된다. 가상 시스템이 VM당 EVC로 구성된 경우 기준선이 클러스터 EVC 구성과 다를 수 있다. 다음 탐색 출력에서 클러스터 설정과 달리 VM당 EVC 기준선이 다른 가상 시스템 'DB01'을 볼 수 있다.

evc-script-output.png

이것은 지원되는 상황이다. 그러나 per-VM EVC 기준선이 클러스터의 ESXi 호스트에서 지원하는 것보다 높은 경우, 해당 per-VM EVC 기준과 호환되는 호스트가 없기 때문에 가상 시스템의 전원이 켜지지 않는다.

perVM-EVC-nocomphosts.png

ESXi 호스트가 구성된 EVC 기준선을 지원하는지 항상 확인하여 per-VM EVC 구성을 실행하는 가상 시스템을 수용할 수 있는지 확인한다. ESXi 호스트에 대한 정보와 지원되는 최대 EVC 레벨이 필요한 경우 다음 PowerCLI 명령을 실행한다.

Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

출력에는 ESXi 호스트, 실행 중인 CPU 패키지 및 지원되는 최대 EVC 기준선이 나와 있다.

evc-host-script-output.png

마치면서

앞에서 설명한 바와 같이, 중요한 점은 일반적인 권장사항은 EVC를 활성화하는 것이다. 보다 세분화된 접근 방식과 하이브리드 클라우드 지원을 위해 per-VM EVC 기능은 가상 인프라에서 EVC를 구현할 때 좋은 출발점이다. EVC 기능을 활성화하면 워크로드 이동성을 최대한 활용할 수 있다!

 

No Comments
Back to top