ESXi でGPUパススルーしてみた

3行で表すと

ESXi仮想マシンに、GPUとUSB拡張カードをパススルーして
普通のPCとほぼ変わらない使い勝手の仮想マシンを立ち上げた。
参考にしたサイトのほうが詳しいのでそちらを見るべき(末尾)

レシピ

  1. VMware ESXi Hypervisor 6.0U2 (無料。 6.5は別のトラブルがありNG6.5でも可)
  2. Radeon HD 7750 (別にこれでなくてもよいが、たぶん、77x0かリネーム品のR7 2x0が良い)
  3. USB 3.0拡張カード(これがないと事実上使い物にならない)

1は無料でダウンロード可能なので省略。
2は、これ以降のRadeonには初期化周りのバグがあり、運用に工夫が必要らしい。
GeForceはドライバが仮想マシン上で動いてると判断すると止まる(回避方法あり)
#普通に ESXi GPU パススルーでぐぐると書いてくれている人がいるので省略

3は、仮想マシンの操作をするのにvSphere Client / Web Clientのコンソールが使えなくなるため、
かならず必要。ESXiのUSBパススルーではキーボード、マウスをパススルーすることができないので
USBコントローラーごとパススルーしてしまえという力業。

やりかた

  1. BIOS(UEFI)セットアップで、CPU内蔵GPUがあれば無効化する。
    これ、不要だと思って最初は有効のままで進めたけれど、ダメでした(後述)
    今時、VT-dが有効になっていないマザーもないと思いますが、有効であることを確認してください。
    AMD系だとIOMMUとかいうらしいですが、最近AMD系触ってないのでわからないです。
  2. ESXiをインストール
    おもしろいことはないので省略
  3. Windows仮想マシンを普通に作る
    おなじく省略。強いて言えば、EFIブートで作る。Secure Bootはオフにしておく。
  4. 仮想マシンに遠隔操作系ソフトを入れる(VNC, MirrorDTC, TeamViewer etcetc)
    あとでGPUを追加して、マルチディスプレイ状態になると、コンソールからまともに操作できなくなるので必須。
    リモートデスクトップではだめ。必要な設定が変更できない。
  5. ESXi上でデバイスパススルー可能なデバイスにGPU、USBカードを指定
    これも問題はないはず。通常、GPU自体と、Audio Device的なのがあるはずなので、両方とも指定する。
  6. Windows仮想マシンにGPU、USBカードを割り当て
    この時点で、ブルースクリーンが出たりすると悪夢。もうなんというかいろいろ試すしかない。
  7. Windows仮想マシンに、遠隔操作系ソフトで入って、GPU側のディスプレイのみ表示にする。
    この変更にコンソールは使えない。マウスカーソルの動きが変になってしまってまともに操作できない。
    Windows10なら、デスクトップを右クリックして、ディスプレイ設定。
    複数のディスプレイ→2番のモニタのみ に変更。
    リモートデスクトップだとこの部分の変更はできませんという表示になる。
  8. 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パススルー等は上記手順で普通に動きました。
    ※追記 たまに引っかかる(数秒フリーズする)症状があった為、以下の手順を適用しました。
    http://qiita.com/yakumo/items/c9caea66a9ff91bb74f0

  • 内蔵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パススルー(基本編)
http://silver0480.blog80.fc2.com/blog-entry-409.html

ESXi 6.0u1 GPUパススルーでVM再起動できない問題の解決
http://silver0480.blog80.fc2.com/blog-entry-411.html

comments powered by Disqus