Files

27 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 가상 머신 둘과 호스트 프로세스가 하나의 NVMe 로 모인다
## Alternative text
VM1 QEMU, VM2 QEMU, Nginx, Host 기타 네 곳에서 나온 화살표가 하나의 Host Block Layer 로 모이고 거기서 NVMe 로 나가는 수렴 흐름도.
## Long description
위쪽에 네 출발점이 나란히 있다. VM1 QEMU 는 WRITE X 와 READ Y, WRITE Z 를 내고 VM2 QEMU 는 READ A 와 WRITE B 를 내며, 그 옆에 호스트의 Nginx 와 다른 프로세스가 있다. 네 갈래가 모두 가운데의 Host Block Layer 하나로 모인다. Host Block Layer 는 그 I/O 가 가상 머신 안에서 시작했는지 호스트 프로세스에서 시작했는지를 본질적으로 구분해 처리하는 계층이 아니라 들어온 것을 모두 Host block request 로 다루고, 그 요청들을 queue 에서 관리해 맨 아래 NVMe 로 dispatch 한다. 여기서 생기는 경쟁이 Storage Contention 이고 CPU 실행 시간을 두고 벌어지는 CPU Contention 과는 다투는 자원이 다르다는 것은 본문 문단이 맡는다.
## Elements and evidence
- **VM1 QEMU** (service): 가상 머신 하나의 QEMU 프로세스. 게스트의 I/O 가 여기서 호스트 파일 I/O 가 된다. Evidence: L7029L7029, L7041L7044.
- **VM2 QEMU** (service): 다른 가상 머신의 QEMU 프로세스. Evidence: L7031L7031, L7046L7048.
- **Nginx** (service): 호스트에서 직접 도는 프로세스. Evidence: L7033L7033.
- **Host 기타** (service): 그 밖의 호스트 프로세스. Evidence: L7035L7038.
- **Host Block Layer** (service): 어디서 왔는지 구분하지 않고 모두 Host block request 로 다루는 계층. queue 에서 관리해 device 로 내보낸다. Evidence: L7031L7031, L7017L7022, L7054L7054, L7058L7060.
- **NVMe** (device): 네 갈래가 결국 함께 쓰는 하나의 물리 device. Evidence: L7031L7031, L7019L7019, L7066L7069.
## Relationships
- **VM1 QEMU → Host Block Layer:** data. Evidence: L7029L7031.
- **VM2 QEMU → Host Block Layer:** data. Evidence: L7031L7031.
- **Nginx → Host Block Layer:** data. Evidence: L7031L7033.
- **Host 기타 → Host Block Layer:** data. Evidence: L7031L7035.
- **Host Block Layer → NVMe:** dispatch. Evidence: L7031L7031, L7054L7054.