(새 문서: 분류: 가상화 ==개요== I/O Virtualization은 I/O 스택을 어떻게 가상화 할 수 있을지에 대해서 전반적인 내용을 다룬다. I/O스택은 굉장히 복잡하며 깊은 콜 스택을 가지고 있는데 이러한 소프트웨어 스택을 줄이는 것이 I/O가상화의 큰 목표이다. I/O가상화에서 필요한 조건은 다음과 같다. *Performance: I/O성능 Throughput and latency가 포함된다. *Safety: 안정성. 하드웨어 인...) |
편집 요약 없음 |
||
30번째 줄: | 30번째 줄: | ||
|Hardware assisted | |Hardware assisted | ||
| +||++||++ | | +||++||++ | ||
| | | [[SR-IOV]] | ||
|} | |} | ||
2023년 3월 29일 (수) 03:32 판
개요
I/O Virtualization은 I/O 스택을 어떻게 가상화 할 수 있을지에 대해서 전반적인 내용을 다룬다. I/O스택은 굉장히 복잡하며 깊은 콜 스택을 가지고 있는데 이러한 소프트웨어 스택을 줄이는 것이 I/O가상화의 큰 목표이다.
I/O가상화에서 필요한 조건은 다음과 같다.
- Performance: I/O성능 Throughput and latency가 포함된다.
- Safety: 안정성. 하드웨어 인터페이스를 가상머신으로부터 숨기고, 호스트나 다른 가상머신으로부터 보호해야 한다.
- Multiplexing (Sharing or Interposition): 하드웨어 인터페이스를 다른 가상머신끼리 공유해야 한다.
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와 같은 기술이 대표적이다.
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스택을 구현하는 방법이 있다. 이를 이용하면 성능, 안정성 그리고 공유성 측면에서 장점을 가져올 수 있다.