ESXi는 별도의 주소 변환 수준을 추가하여 게스트의 물리적 메모리를 가상화합니다.

  • VMM은 결합된 가상 대 시스템 페이지 매핑을 섀도 페이지 테이블에서 유지합니다. 섀도 페이지 테이블은 게스트 운영 체제의 가상 대 물리 매핑과 VMM이 유지하는 물리 대 시스템 매핑을 이용하여 최신 상태로 유지됩니다.

  • VMM은 게스트 운영 체제 메모리 관리 구조를 제어하는 가상 시스템 명령을 가로채 프로세서의 실제 메모리 관리 장치(MMU)가 가상 시스템에 의해 직접 업데이트되지 않게 만듭니다.

  • 프로세서의 페이징 하드웨어는 섀도 페이지 테이블을 직접 사용합니다.

  • 섀도 페이지 테이블의 일관성 유지를 위해서는 다소 큰 계산 오버헤드가 발생합니다. 이 오버헤드는 가상 CPU의 수가 증가할 때 더 두드러집니다.

이 주소 변환 방식을 사용하면 섀도 페이지 테이블을 설정한 후 추가적인 주소 변환 오버헤드 없이 가상 시스템에서 일반적인 메모리 액세스를 실행할 수 있습니다. 프로세서 캐시에 있는 TLB(Translation Look-aside Buffer)가 섀도 페이지 테이블에서 읽은 가상 페이지와 시스템 페이지 간 직접 매핑을 캐싱하므로 VMM에 의한 추가적인 오버헤드 없이 메모리에 액세스할 수 있습니다. 소프트웨어 MMU는 하드웨어 MMU보다 오버헤드 메모리 요구 사항이 더 높습니다. 따라서 소프트웨어 MMU를 지원하려면 VMkernel의 가상 시스템에 대해 지원되는 최대 오버헤드를 늘려야 합니다. 일부 경우에는 워크로드로 인해 많은 양의 TLB 누락이 발생할 경우 하드웨어 지원 방식보다 소프트웨어 메모리 가상화의 성능 이점이 클 수 있습니다.

성능 고려 사항

두 개의 페이지 테이블 집합을 사용하면 다음과 같은 성능 영향이 있습니다.

  • 일반적인 게스트 메모리 액세스에서는 오버헤드가 발생하지 않습니다.

  • 가상 시스템 내에서 메모리를 매핑하기 위해 추가적인 시간이 필요합니다. 이런 상황은 다음과 같은 경우에 발생합니다.

    • 가상 시스템 운영 체제가 가상 주소와 물리적 주소 간 매핑을 설정하고 업데이트합니다.

    • 가상 시스템 운영 체제가 한 주소 공간에서 다른 주소 공간으로 전환됩니다(컨텍스트 전환).

  • CPU 가상화와 마찬가지로 메모리 가상화 오버헤드는 워크로드에 따라 달라집니다.