I/O 仮想化について
IntelR Virtualization Technology for Directed I/O
の覚書。
I/O Virtualization のモデルとして、以下 4つが挙げられている。
下にいくほど、進化したモデルといえる。
- Emulation:
VMM が物理デバイスを仮想デバイスとして VM に見せること。VMM が物理デバイスをエミュレーションする。
- New Software Interfaces:
VM 上の OS が VMM が提供している I/F を介して物理デバイスを制御する。I/F 分多少のオーバーヘッドはあるが、エミュレーションほどではない。VM 上の OS が、その I/F をサポートしている必要がある。
- Assignment:
VMM が物理デバイスを VM に割り当て、VM 上の OS が直接物理デバイスを制御する。ただし、VM が他 VM に影響を及ぼさないよう物理デバイスの制御をするには、専用のハード機能が必要。デバイス自身にではなく、PCI Express でいうところの Root Complex に必要。オーバーヘッドはない。
- I/O Device Sharing:
物理デバイスを複数の VM 間で共有し、VM 上の OS に直接デバイスの制御を許可する。物理デバイスは、Multiple Function をサポートしている必要あり。(PCI Express の SRIOV の VF のようなもの)
所感:
IO 仮想化の目指すところは、VM への Native IO 割り当てを、安全に、柔軟に、だろうか。後は結局性能向上が課題か(つまり問題は仮想化にはない)。
一般コンピュータはオフィス用のみとなり、他は Appliance と化すか。