ESXiサーバのGPUをPCI passthough(vSphere VMDirectPath I/O)でVMがGPUを使えるように設定を行いました。必要な設定内容など紹介したいと思います。
VMでGPUを使う背景
最近始めたYouTubeのゲームのプレイ動画は、キャプチャーボードで動画を保存しています。
キャプチャボードは基本的にはPCに接続し、専用ソフトで録画を行うのですがキャプチャーボードのためだけにパソコンを起動…という事は面倒だなと思い、「ならば常に稼働させているサーバで録画出来ないか?🤔」と考えました。
録画するソフトウェアによりますが、私が使っているのはAvermediaのRECentralというソフトウェアでGPU処理が必要となります。このため仮想化環境でキャプチャボードで録画出来るように、今回vSphere VMDirectPath I/Oを使ってGPUパススルーの設定を行いました。
vSphere VMDirectPath I/Oの設定
ESXiホスト側の設定
GPUパススルーさせるESXiホストの、「設定」→「PCIデバイス」から「パススルーの構成」でパススルーさせるデバイスの指定を行います。 前提条件として、ホストのBIOSでVT-d or IOMMUの有効化が必要です。
VM側の設定
VMの「設定の編集」→「新規デバイスを追加」→「PCIデバイス」でGPUをアタッチします。
詳しくはVMwareのサイトに記載されています。
vmxのパラメータ設定
追加でVMに対し、vmxのパラメータ設定が必要となります。
vmxの編集は
- Datastoreのvmxファイルを直接編集
- VMの「設定の編集」→「仮想マシン オプション」→「詳細」→「構成パラメータ」の設定の編集
から可能です。
hypervisor.cpuid.v0=FALSE
pciPassthru0.msiEnabled=FALSE
pciPassthru1.msiEnabled=FALSE
当初MSIの設定は行っていなかったのですが、この場合アプリケーションは稼働するものの、キャプチャを開始した瞬間などに上記BSoDになるなど苦戦しました😇
ちなみに svga.present=FALSE
とするとリモートコンソールが無効化され、GPUからの画面出力に限定されますが、VMRCなどのコンソールがすべて使えなくなります。GPUパススルーの設定として必要なければTRUEのまま、コンソールは有効化しておいた方が良いです。
上記設定を行ったうえで、GPUのドライバインストールを行えばGuest OS側でGPUを認識するはずです。画面に変化がない場合にはGPUの画面出力側をプライマリディスプレイに変更するなど、OS側の設定を行うと画面が表示されます。(ここもはまりどころ😇)
VMの操作
GPUパススルーを行うと、GPUの画面出力またはコンソール(svga.present=TRUE
の場合)の出力となります。GPU描画系のソフトウェアはリモートデスクトップで利用出来ないように、基本的にはGPUからの画面出力の画面を見て、操作を行うことになります。コンソールを有効化している場合には、マウスとキーボードはVMRC経由で操作を行えますが、コンソールを無効化している場合にはマウスとキーボードもパススルーさせ、操作する必要があります。以下を参照すればESXiサーバに接続されたマウス、キーボードをVMにアタッチし、GPUパススルーした画面を見ながら操作が可能になります。
How to passthrough USB Keyboard/Mouse HID and CCID devices to VM in ESXi?
GPUパススルーを行うと
- ホスト再起動時、パススルーさせたGPUがESXiのプライマリとなっている場合にはPCIパススルーの構成設定からチェックが外れます。
- 恐らくこちらの設定を行えば回避できると思う..
- PCIパススルーされたVMのメモリはリザーブされます。
- KB2142307 に記載の通り、vMotion, Fault Toleranceなどは使えなくなります。
- GPUをESXiのコンソール出力で利用していた場合、パススルーを構成したVMが起動するとESXiのコンソール出力は消えます
- ESXiのコンソールはsshの
dcui
で代用可能なので、そこまで影響はないと思います
- ESXiのコンソールはsshの
まとめ
今回vSphere VMDirectPath I/Oを使ったGPUパススルーの設定方法を紹介しました。
vMotion等の制約はパススルーという性質上、制限されますがそれ以上にGPUリソースを使うサーバの集約化が出来るのでメリットは大きいと思います。とりあえずサーバのGPUはローエンド…ではなく、ハイエンドのGPUを選定してパススルーで活用するのが良さそうです🤔 最近だとBitfusionもありますし
キャプチャボードの仮想化環境での録画は他にUSBのパススルーも必要だったりするのですが、そちらについてはキャプチャボードのレビュー記事で紹介したいと思います。ちなみにパススルーさせた動画は以下の通り快適に録画出来ています😄
ESXiでpassthroughして録画してみました。
— spg (@spg_games) December 29, 2020
ちゃんと取れているのと、動画編集ソフトで若干画質落ちている🤔
【スプラトゥーン2】修行4日目 フェスはもちろんスーパースター⭐で無敵 https://t.co/geQYFqeXSD @YouTubeより