ESXi 6.0u2 + Geforce GTX1070 GPU passthrough

 2016-09-03
ESXi の GPUパススルーは、基本的にAMD RADEONしかダメだったため
1年ほど前にR9 380を買ってパススルーしていた
nvidia Geforceで動かせる方法が分かったのでメモ

【ESXi で Geforce はなぜ動かなかったか】
 ・nvidiaのコンシューマ向けGPU(=Geforce)は、仮想環境で動かないように作ってある
 ・ロック1 : 仮想マシン自体の初期化ができない(PCI Bus Resetを無視する)
 ・ロック2 : Windowsのドライバで「仮想環境CPUを検知すると、ドライバを停止させる (Code 43エラー)」

 ・AMD RADEONにはそういうロックはない
 ・が、実はUEFI環境でソフトリセットできない馬鹿バグがある(さすがAMD!開発リソースが足りてないね!)
 ・AMDのバグ回避方法は以前書いた通り


【対処方法の概要】
 ・PCI Bus Resetについては、UEFIだとちゃんと動く。Quadroと作り分けが面倒になった?
 ・ドライバのロックは、「仮想環境じゃないし」という嘘をつけばOK
 ・実は、仮想環境ネスト(ESXi on ESXiとか、Hyper-V on ESXiとか)で騙すときと同じ方法。

 ・linux kvmでは "kvm=off" オプションが該当する。
 ・じゃあESXiでは・・・"hypervisor.cpuid.v0 = FALSE"オプションが該当するんだな

 考え出したのはこの人。
 いわれてみれば「そうだよね」、でも自分では発想できないわ・・・
 https://ianmcdowell.net/blog/esxi-nvidia/

 ・redditにも転載されてますが、まだほとんど有名になってない
 ・ロシア人も転載してる
 ・あとどっかドイツ人も発見してたはずだけどURL失念


【確かめてみる】
 というわけで買っちゃいましたよ、EVGA Geforce GTX 1070 SC ACX 3.0を!
 もちろんアメリカから個人輸入。
 リファレンス基板+ボールベアリング長寿命が欲しいとか
 変態的なことを言わない限り
 今は国内製品も安いので、輸入の旨みは少ない。



2週間ほどで届いたので、去年買った Powercolor PCS+ R9 380と比較。
でけぇわ・・・・207mmのR9 380に対して、280mmのGTX 1070って感じ。
でも消費電力は190Wから150Wに下がる(しかも、能力はほぼ2倍になる)けどね!
20160903_evga_gtx1070.jpg


【設定の実際】
 環境は以前と同じ。
 Core i7-4790s(Haswell) / ASUS Z97-A / 32GiB Memory / ESXi 6.0u2

 設定においてGeforce特有なのは1点だけだが、
 一応一般的なESXi GPUパススルーのお約束を再列挙

 ・intel VT-d が使えるCPU & マザーが必須。
 ・iGPUを明示的にOFFにできるマザーが必須。(iGPUをセカンダリにできるだけでも動くかも?)
 ・仮想マシンはUEFIで作成する
 ・仮想マシンのメモリを「すべて予約」にする
 ・仮想マシンのメモリ容量は、4GB以上でも問題なし(5.5u3以降)
 ・GPUを接続する前に、OSのインストールを終えておく。

 ・ESXi 5.5 u3以降、 "pcihole.start = 1200" の指定は不要。自動化されています
 ・ESXi 6.0u2時点で、VMware Host Client(webで設定できるアレ)は超致命的バグがあるので、使用NG
 ・バグの中身:仮想PCの編集すると、強制的にBIOS起動にセットされる(おい!ふざけるな!)
 ・直してるみたいなんで、6.0u3では直ってるかも
 ・仕方ないので、旧来のvshpere clientで設定してください

 ・で、まぁ普通にGeforceをパススルーする。RADEONと違って、VGAと認識されてるのがすごいね
 20160903_vsphere_vmdirectpath.jpg

 ・仮想マシンで登録したあと、下記のオプションを追加する。
  hypervisor.cpuid.v0 = FALSE

 ・仮想マシンエディタの「オプション」-「構成パラメータ」で設定すればOK
 ・直接vmxファイルいじってもOKよ!(削除は直接いじるしかないしね)
 20150912_ESXi_VM_DeviceOption.png
 ・こんだけでGeforce GTX 1070 動く
 ・RADEONにある、「仮想マシン再起動できないよ問題」もなし
 ・vmware SVGAアダプタは削除できないので、普通にWindows10上でマルチモニタOFFにする。


【動作の状況】
実際に仮想マシンから見えているところ。ばっちりドライバ読み込めてる。
20160904_ESXI_GEFORCE.jpg


2016/09/06追加:
みんな大好きFF14ベンチ。
DX11最高品質 / 1920 x 1080 でスコア14,431
同レベルのCPU(i7-4770や4771)でのスコアは15,000前後なので
GPUパススルーによるオーバーヘッドは5%程度かな。
20160906_FF14_GTX1070.jpg


いやあ最高だわ!
最初動作が不安定で、電源の経年劣化かと疑うあまり
電源買い直したりしたけれど
結局は電源もESXiも関係なかった
(特定のUSBデバイスを繋いでいると起動不安定になるとか、
 そういう類のもの。私はXbox One Wireless Controllerだった)


というわけで、vm再起動に問題があるAMD RADEONは
さっさと売り払いました
(Geforceは勿論問題なくvm再起動できる)
RADEONは、Steamのホームストリーミングにも
致命的バグを放置されてるので
ちょっとかわいそうな気もするが。
スポンサーサイト
タグ :
コメント
素晴らしい検証をありがとうございました。

うちでは残念ながらIvy Bridge (i7-3770) + GTX 750Tiの少し古い環境ではパススルーできてません。Windows10がたちあがらなくなってしまいました。

PCI passthru device 0000:01:00.0 caused an IOMMU fault type 6 at address 0x7faad44000. Powering off the virtual machine.

skylakeでも買おうかと思い始めました。
【2016/10/02 12:50】 | ぽん #qbIq4rIg | [edit]
参考にさせていただきました。ありがとうございます。
マザーが少し古くて心配でしたが、エンコード等のCUDA計算用として快適に動作しています!
当方の構成も参考に書いておきます。ゲーム用ではないので、少々異端ではありますが。

M.B. : ASUS P9D-I
CPU : Intel Xeon E3-1230L v3
GPU : 玄人志向 GF-GTX1070-E8GB/BLF
Hypervisor : ESXi 6.0.0 3620759 (6.0 Update2 のISOイメージから入れたもの)
仮想マシンバージョン : 11
ゲストOS : Windows 10 (Windows 8.1からアップデートしたもの)
NVIDIA グラフィックスドライバ : 375.95

Installの流れとしては、
1.hypervisor.cpuid.v0 = TRUE のままで、Windows 8.1のセットアップからWindows 10の最新アップデートまで実施してシャットダウン。
2.仮想マシンにGTX 1070のVGAとAudioを追加、hypervisor.cpuid.v0 = FALSE に設定。
3.起動後にNVIDIAグラフィックスドライバのインストール。最新バージョンへ更新。
という感じです。
【2016/11/22 00:47】 | dc_misty #QygVoc82 | [edit]












管理者にだけ表示を許可する
トラックバック
トラックバックURL:

http://silver0480.blog80.fc2.com/tb.php/424-9e9f41bd

≪ トップページへこのページの先頭へ  ≫