ESXi でGPUパススルーしてみた
3 行で表すと
ESXi 仮想マシンに、GPU と USB 拡張カードをパススルーして
普通の PC とほぼ変わらない使い勝手の仮想マシンを立ち上げた。
参考にしたサイトのほうが詳しいのでそちらを見るべき(末尾)
レシピ
- VMware ESXi Hypervisor 6.0U2 (無料。 <s>6.5 は別のトラブルがあり NG6.5 でも可)
- Radeon HD 7750 (別にこれでなくてもよいが、たぶん、77x0 かリネーム品の R7 2x0 が良い)
- USB 3.0 拡張カード(これがないと事実上使い物にならない)
1 は無料でダウンロード可能なので省略。
2 は、これ以降の Radeon には初期化周りのバグがあり、運用に工夫が必要らしい。
GeForce はドライバが仮想マシン上で動いてると判断すると止まる(回避方法あり)
#普通に ESXi GPU パススルーでぐぐると書いてくれている人がいるので省略
3 は、仮想マシンの操作をするのに vSphere Client / Web Client のコンソールが使えなくなるため、
かならず必要。ESXi の USB パススルーではキーボード、マウスをパススルーすることができないので
USB コントローラーごとパススルーしてしまえという力業。
やりかた
- BIOS(UEFI)セットアップで、CPU 内蔵 GPU があれば無効化する。
これ、不要だと思って最初は有効のままで進めたけれど、ダメでした(後述)
今時、VT-d が有効になっていないマザーもないと思いますが、有効であることを確認してください。
AMD 系だと IOMMU とかいうらしいですが、最近 AMD 系触ってないのでわからないです。
- ESXi をインストール
おもしろいことはないので省略
- Windows 仮想マシンを普通に作る
おなじく省略。強いて言えば、EFI ブートで作る。Secure Boot はオフにしておく。
- 仮想マシンに遠隔操作系ソフトを入れる(VNC, MirrorDTC, TeamViewer etcetc)
あとで GPU を追加して、マルチディスプレイ状態になると、コンソールからまともに操作できなくなるので必須。
リモートデスクトップではだめ。必要な設定が変更できない。
- ESXi 上でデバイスパススルー可能なデバイスに GPU、USB カードを指定
これも問題はないはず。通常、GPU 自体と、Audio Device 的なのがあるはずなので、両方とも指定する。
- Windows 仮想マシンに GPU、USB カードを割り当て
この時点で、ブルースクリーンが出たりすると悪夢。もうなんというかいろいろ試すしかない。
- Windows 仮想マシンに、遠隔操作系ソフトで入って、GPU 側のディスプレイのみ表示にする。
この変更にコンソールは使えない。マウスカーソルの動きが変になってしまってまともに操作できない。
Windows10 なら、デスクトップを右クリックして、ディスプレイ設定。
複数のディスプレイ →2 番のモニタのみ に変更。
リモートデスクトップだとこの部分の変更はできませんという表示になる。
- GPU につないだディスプレイに Windows のデスクトップがでる
USB 拡張カードにつないだキーボード、マウスで操作も可能なはず。おつかれさまでした。
2017/06/09 追記 GeForce 1060(6GB) 動作確認しました。
一応、VM の設定の詳細 → 構成パラメータで hypervisor.cpuid.v0 = FALSE を追加しました。
普通にドライバもインストールでき、再起動等もなんら問題ありません。
これで、TensorFlow も行けますね・・・
(TensorFlow の動作確認しました)
はまったポイント
ESXi 6.5 の Web Client でデバイスパススルー可能にする指定ができない
チェックボックスが無効になっていて、Radeon を指定できない。なぜかできない。
これは、vSphere Client 6.0 の C#クライアントを使って指定すると指定可能。
指定してしまえば、仮想マシンに割り当てるのは Web Client から指定できる。
じゃあ、すべてを vSphere Client からやってしまえば…と思ったけれども、残念ながら
vmx-13 の仮想マシンは vSphere Client から一切変更できませんでした。vmx-11 で作れば…
可能かもしれないです。
-> アップデートをあてると修正されました。
ESXi 6.5 を入れたらデータストアを見失ったというログが不定期に出る
原因不明。SATA が 6 ポートあり、1 つが SSD で datastore1 という構成にしているが、この SSD を
見失ったというエラーが不定期に出て、その間ディスクアクセスが止まる。
ESXi6.0 にしたら治ったというか、発生しなかった。
※追記 (少なくとも)6.5d で上記現象は発生しなくなりました
ちなみに、この状態でも GPU パススルー等は上記手順で普通に動きました。
※追記 たまに引っかかる(数秒フリーズする)症状があった為、以下の手順を適用しました。
内蔵 GPU を生かしたまま、GPU パススルーしようとした
起動時にブルースクリーンが発生するか、起動してもデバイスマネージャ上で!マークがついて
動かない。曰く「POST 時のデバイスと異なるデバイスなので起動できない」
ブルースクリーンは VIDEO TDR FAILURE。 これで正常に動けば、ESXi の表示は内蔵 GPU で、
Windows の表示は外部 GPU みたいなことができて幸せなんだけれども、とにかくダメでした。
-> ただし、GeForce 時にこれが起きるかは試していません。
USB3.0 拡張カードに補助電源をさし忘れた
これで4時間くらい無駄にしました。さし忘れると、USB2.0 だろうが何だろうが認識しません。
SATA の外部電源だったので平べったくて見逃していました…
仮想マシンにパススルーして検証したので、パススルーに失敗していると思い込んで
全然関係ないところを調べた挙句に、電源ささってない落ちだったという。悲しい。
-> ESXi 関係ないポカミス
ちなみに
普通の仮想マシンなので、GPU を外してしまえば普通に使うことができます。
でも、仮想マシンなのでスナップショットも使用可能!
#起動中に取るのは怖いのでシャットダウンしてからとってますが
追記
- スリープからの復帰は怪しい(戻ってこれないことがある)ので OFF にして使用しています
- ディスプレイの電源 OFF からの復帰も同様に戻ってこれないことがあるので OFF(常時 ON)で使用しています
- Steam Link のような特殊なものは上手く動かないかもしれません
備考
PC の構成は以下の通り
- マザーボード GIGABYTE Z87X-UD3H (BIOS F9)
- CPU Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
- メモリ 16GB
- USB3.0 カード エアリア OverFender R (ルネサスチップ) SD-PEU3R-2E2IL
- Sapphire Radeon HD7750
参考にした(ほぼお手本にしたサイト)
以下のサイトを読めば、この文章いりません。(本音)
ESXi 6.0u1 Haswell + Windows10 で GPU パススルー(基本編)
ESXi 6.0u1 GPU パススルーで VM 再起動できない問題の解決
Discussion