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 と化すか。