Files
document-haness/docs/virtualization/final/assets/diagrams/guest-memory-address-translation-path/guest-memory-address-translation-path.alt.md
T

2.8 KiB
Raw Blame History

Guest 의 메모리 접근 한 번은 이름이 두 번 바뀌며 네 계층을 지난다

Alternative text

Guest 구역 안에서 Keycloak · PostgreSQL 의 GVA 가 Guest TLB 와 Guest Page Table 을 지나 GPA 가 되고, VM Boundary 를 넘어 EPT 에서 HPA 가 된 뒤 Host RAM 구역의 Host Physical Memory 를 지나 NUMA Node 0 과 NUMA Node 1 로 갈라지는 주소 변환 경로도.

Long description

위에서 아래로 읽는다. 맨 위 Guest 구역 안에 Keycloak · PostgreSQL 이 있고 그 접근은 GVA 로 Guest TLB 에 들어간다. TLB 에 변환이 없으면 TLB Miss 로 Guest Page Table 을 조회하고 거기서 GVA 가 GPA 가 된다. 그 GPA 는 VM Boundary 를 넘어 Guest 구역 밖의 EPT 로 가고 EPT 가 GPA 를 HPA 로 바꾼다. HPA 는 Host RAM 구역의 Host Physical Memory 에 닿고, 그 physical page 는 맨 아래에서 NUMA Node 0 또는 NUMA Node 1 가운데 한쪽에 놓인다. 상자 안 작은 글씨는 그 단계가 어느 계층인지와 무엇을 무엇으로 바꾸는지를 적은 것이다. 어느 단계에서 접근이 완료되지 못할 때 무엇이 일어나는지와 QEMU 가 이 경로를 어떻게 준비하는지는 본문의 문단과 표가 맡는다.

Elements and evidence

  • Boundary: Guest (boundary): VM Boundary 안쪽. Guest Userspace 와 Guest Kernel 이 여기 있고 GVA 가 GPA 가 되는 첫 번째 변환이 여기서 끝난다. Evidence: L4034L4053.
  • Boundary: Host RAM (boundary): 변환이 끝난 주소가 닿는 실제 서버 메모리. Evidence: L4069L4079.
  • Keycloak · PostgreSQL (actor): Guest 안에서 메모리를 읽는 프로세스. 여기서 GVA 가 출발한다. Evidence: L4034L4038.
  • Guest TLB (component): 최근 변환 결과를 담아 두는 CPU 안의 캐시. Evidence: L4043L4045.
  • Guest Page Table (component): GVA 를 GPA 로 바꾸는 첫 번째 변환 표. Evidence: L4048L4053.
  • EPT (component): VM Boundary 바깥에서 GPA 를 HPA 로 바꾸는 두 번째 변환 표. KVM 과 CPU 가 맡는다. Evidence: L4055L4067.
  • Host Physical Memory (store): HPA 가 가리키는 실제 서버 메모리. Evidence: L4069L4072.
  • NUMA Node 0 (store): physical page 가 놓일 수 있는 한쪽 NUMA node. Evidence: L4073L4075.
  • NUMA Node 1 (store): physical page 가 놓일 수 있는 다른 쪽 NUMA node. Evidence: L4073L4075.

Relationships

  • EPT → Host Physical Memory: HPA. Evidence: L4062L4071.
  • Host Physical Memory → NUMA Node 0: Physical Page. Evidence: L4071L4075.
  • Host Physical Memory → NUMA Node 1: Physical Page. Evidence: L4071L4075.
  • Guest Page Table → EPT: VM Boundary. Evidence: L4053L4062.
  • Keycloak · PostgreSQL → Guest TLB: GVA. Evidence: L4036L4043.
  • Guest TLB → Guest Page Table: TLB Miss. Evidence: L4043L4048.