virt-managerにPCIパススルーの設定項目というものがあるようです。
調べてみたところ、VT-dというハードウェアによる仮想化支援機能が有効な場合に、ゲストOSへPCIデバイスの制御を渡すことができる設定のようです。
今更ながら、VT-dについて概要を調べてみました。
Table of Contents
1 VT-dとは
Virtualization Technology Direct I/Oの略で、ハードウェアでDMAや割り 込みのリマッピングをサポートし、ゲストOSにI/O制御を渡すことが可能に なります。
3年くらい前に盛り上がってたようです。PCを新調する前に知っていれば…… (私のPCはVT-d非対応)。
ゲストOSにとっての物理アドレスはホストOSにとっての仮想アドレス(ゲス トOSはアプリケーションのひとつとして動作)に過ぎず、DMAで物理アドレ スを指定することができません。
ホストOS側でアドレスを調停したり、I/Oデバイスの割り込みをゲストOSに 通知する機能が必要になります。仮想環境ではないネイティブな環境に比べ てオーバヘッドが多くなり、処理が極めて重くなります。
KVMではvirtioというオーバヘッドが少ない仕組みを使用します。ゲストOS にvirtioが使われていることを通知することで、ゲストOSはvirtioドライバ 経由でI/Oの処理をホストOSに委託します。この結果、先ほどの場合に比べ て処理が軽くなります(ネイティブに比べればオーバヘッドはあります)。
VT-dを使うとI/OデバイスのDMAと割り込みがゲストOS用にリマッピングされ る為、ホストOSが担っていた機能が不要となります(ゲストOS起動前に前処 理くらいは必要かもしれませんが)。結果、ネイティブ環境に近い性能が出 ることになります(もしかしたら少しくらいはホストOSが担う処理があるか もしれませんが)。
デメリットはI/Oデバイスの共有ができないことです。ただし、リッチなグ ラフィクスを必要とするゲストOSにはグラフィクスカードを渡してやる等の 様々な用途があると思います。
AMDのCPUでもAMD-Viという同様の機能があるようです。
2 VT-dの動作条件
CPUとマザーボード(チップセット)がVT-dに対応している必要があります。
Core iシリーズの型番にKが付いているやつは軒並み未対応のようです (私はKが付いてるやつしか持ってないです)。
3 仮想化ソフトの対応状況
大抵の仮想化ソフトでは使用できるようです。ただし、ハードウェア要件が タイトであったり、ドライバが実験段階であったりと、まだまだ一般的では ない感じはあります。
4 KVMとVFIOで3Dゲームを動かしている動画
以下の動画ではホストOSにGentoo Linux、ゲストOSにWindows7という、KVM とVFIOを使用した環境にて、Windows7内でアサシンクリードという3Dゲーム を動かしてます。ネイティブ環境と変わらないように見えます。見るだけで ワクワクしますね。
ただし、KVMのページには以下の記載があり、グラフィクスカードは公式に サポートされている訳ではないようですが、サポートされて欲しいと願うばかりです。
Assignment of graphics cards are not officially supported at the moment, but there has been some success passing through a secondary Radeon HD 5850 as a VM's secondary display.