I/O Virtualization: 두 판 사이의 차이

편집 요약 없음
35번째 줄: 35번째 줄:
==종류==
==종류==
===Direction Access===
===Direction Access===
I/O가상화에서 제일 단순하지만 제일 빠른 성능을 보이는 것으로, 별다른 호스트의 콜 스택없이 하드웨어를 직접 가상머신에 전달하는 것이다. Multiplexing측면에서, Guest와 하드웨어가 1대1매핑 되어야 함으로 단점이 있다. 그러나 호스트 콜 스택을 타지 않기 때문에 Native에 해당하는 성능이 나온다는 점에서 장점이 있다. [[SR-IOV]]같은 기술이 대표적이다.
I/O가상화에서 제일 단순하지만 제일 빠른 성능을 보이는 것으로, 별다른 호스트의 콜 스택없이 하드웨어를 직접 가상머신에 전달하는 것이다. Multiplexing측면에서, Guest와 하드웨어가 1대1매핑 되어야 함으로 단점이 있다. 그러나 호스트 콜 스택을 타지 않기 때문에 Native에 해당하는 성능이 나온다는 점에서 장점이 있다. [[SR-IOV]], PCIe-Passthrough와 같은 기술이 대표적이다.


===Device Emulation===
===Device Emulation===

2023년 3월 29일 (수) 05:17 판


개요

I/O Virtualization은 I/O 스택을 어떻게 가상화 할 수 있을지에 대해서 전반적인 내용을 다룬다. I/O스택은 굉장히 복잡하며 깊은 콜 스택을 가지고 있는데 이러한 소프트웨어 스택을 줄이는 것이 I/O가상화의 큰 목표이다.

I/O가상화에서 필요한 조건은 다음과 같다.

  • Performance: I/O성능 Throughput and latency가 포함된다.
  • Safety: 안정성. 하드웨어 인터페이스를 가상머신으로부터 숨기고, 호스트나 다른 가상머신으로부터 보호해야 한다.
  • Multiplexing (Sharing or Interposition): 하드웨어 인터페이스를 다른 가상머신끼리 공유해야 한다.
I/O가상화 기술 비교
Performance Safety Multiplexing Example
Direct access ++ + -- SR-IOV
Device emulation -- ++ ++ PIO
Paravirtualization + ++ ++ Virtio
Hardware assisted + ++ ++ SR-IOV

종류

Direction Access

I/O가상화에서 제일 단순하지만 제일 빠른 성능을 보이는 것으로, 별다른 호스트의 콜 스택없이 하드웨어를 직접 가상머신에 전달하는 것이다. Multiplexing측면에서, Guest와 하드웨어가 1대1매핑 되어야 함으로 단점이 있다. 그러나 호스트 콜 스택을 타지 않기 때문에 Native에 해당하는 성능이 나온다는 점에서 장점이 있다. SR-IOV, PCIe-Passthrough와 같은 기술이 대표적이다.

Device Emulation

디바이스를 Trap and emulate를 통해서 가상화 시키는 방식이다. Safety와 Multiplexing측면에서 이점이 있지만, 매 요청마다 트랩이 발생하기 때문에 속도 면에서 단점이 있다. 이는 Guest -> (Hardware interrupt) -> Hypervisor -> Kernel stack -> Device -> Inject interrupt to Gest -> Guest의 총 3개의 User-kernel world swtich가 일어나기 때문이다. 대표적인 예로 PIO를 에뮬레이트하는 경우가 있다.

Paravirtualization

반가상화 기법을 사용하여서 I/O스택을 최적화 시키는 방법도 존재한다. 이 방식에서는 Device driver에 수정을 가해서 최적화된 디바이스 드라이버와 호스트 드라이버가 서로 통신하도록 하여서, 풀필요한 콜스택과 에뮬레이션 비용을 줄여 성능면에서 큰 이점이 있다. 반가상화 기법을 사용하면, 성능, 안정성, 그리고 공유의 측면에서 모두 좋은 결과를 얻을 수 있다. (SR-IOV와 같은 Direct access보다는 느리다.) 대표적인 방식으로 Virtio가 존재한다.

Hardware assisted

하드웨어 기법을 사용하여서 I/O스택을 구현하는 방법이 있다. 이를 이용하면 성능, 안정성 그리고 공유성 측면에서 장점을 가져올 수 있다.