2020年7月23日木曜日

ESXi上の仮想マシンでNVIDIA GTX1650を直接使えるようにしてみた (GPUパススルー)

先日、無事自作PCも組みあがり、ESXiもインストールして検証サーバとして使える環境となった。

★前回の記事はこちら↓

今まで自作PCではIntel CPU内蔵のGPUしか使ってきておらず、個別にグラフィックボードを購入するということを今までしてこなかったのだが、今回の自作PCはグラフィックボードとして「NVIDIA GTX1650」を搭載している。

今回、せっかくグラフィックボード搭載しているのに使わないのももったいないので、「GPUパススルー」機能を使って、仮想マシンにGPUを直接使えるように設定してみた

環境

  • OS : ESXi 6.7 Update 3
  • グラフィックボード : ASUS NVIDIA GTX1650搭載シングルファンモデル (4G PH-GTX1650-O4G)

GPUパススルー手順

1. ESXiにてPCIデバイスを確認

ESXiのVMware Host Clientにログインし、「管理」→「ハードウェア」→「PCIデバイス」を選択する。この中で「NVIDIA Corporation TU117 [GeForce GTX 1650]」といった表記でGPUのPCIデバイスが表示されているはずなので、左のチェックボックスを選択する。
※同時に「nVidia Corporation Audio device」もチェックされるが問題ない。

2. 「パススルーの切り替え」を実施

GPUのデバイスを選択したのち、「パススルーの切り替え」を選択する。

3. ESXiの再起動

選択後、再起動が必要となるため、仮想マシンを停止したのち、ESXiを再起動する。再起動後、再度VMware Host Clientにログインし、PCIデバイスを確認すると、パススルー欄が「アクティブ」になっているはずだ。

4. パススルーしたGPUを仮想マシンに追加

仮想マシンの「設定の編集」にて、「その他のデバイスの追加」から「PCIデバイス」を選択する。

PCIデバイスは、先ほどパススルーした「TU117 [GeForce GTX 1650]」を選択する。

5. メモリの予約を実施

PCIデバイスを仮想マシンに接続した場合、割り当てたメモリをすべて予約しなければ仮想マシンを起動することができない。「設定の編集」のメモリにて「すべてのゲストメモリを予約 (すべてロック)」にチェックを入れておこう。

グラフィックボードのドライバをインストール

1. ドライバのインストーラをダウンロード

まずは、導入したグラフィックボードメーカーのサイトからドライバのインストーラをダウンロードしよう。今回導入したグラフィックボードはASUSの以下URLにてダウンロードすることができる。

ダウンロードできるドライバは、どうやらNVIDIAのサイトからダウンロードできるものと同一のようだが、バージョンが少し古い。メーカー確認済みのドライバを利用したほうがよいと思われるので、メーカーサイトからダウンロードできるバージョンでドライバをインストールすることにした。なお、「ユーティリティ」からダウンロードできるGPU管理ツールである「ASUS GPU Tweak II」も、必要に応じてお好みでダウンロードしておこう。

2. Windowsにドライバをインストール

インストーラを起動すると、「NVIDIA グラフィック ドライバーおよび GeForce Experience」か「NVIDIA グラフィック ドライバー」のどちらかを選択できる。私の環境では、GeForce Experienceを選択すると、なぜかOSがエラーで落ちるという事象が発生したため、「NVIDIA グラフィック ドライバー」を選択してインストールを行った。

ドライバのインストール後、デバイスマネージャーで問題なくドライバを認識していれば問題ないのだが、残念ながら「問題が発生したのでこのデバイスは停止しました。 (コード43)」でエラーとなってしまった。

これは、NVIDIAのGPUの仕様によって、OSが仮想マシンであることを検知するとGPUが動作を停止することが原因である。そこで、以下サイトに記載があるとおりに仮想マシンの「詳細の設定パラメータ」に「hypervisor.cpuid.v0 = “FALSE”」を追記することで対処する。

上記を実施し、問題なくパススルーしたGPUを仮想マシンで動作させることができた。

GPUの性能確認

GPUの性能確認のため、動画のエンコードを実施してみることにする。「XMedia Recode」にて2分/200MB程度の動画をMPEG-4 AVCにてエンコードしてみた結果が以下の通り。やはり、GPUによるエンコードの方が圧倒的に速い。

コーデック GPU エンコード時間
MPEG-4 AVC / H.264 なし 52秒
MPEG-4 AVC / H.264 (NvidiaNVENC) NVIDIA GTX1650 11秒

ASUS GPU Tweak IIも使える

ASUSのサイトで公開されているGPU管理ツールである「ASUS GPU Tweak II」も使うことができる。GPUの動作周波数や温度もきちんと確認することができる。

まとめ

以上で仮想マシンからNVIDIA GTX1650を直接使えるようになった。これにより、今まで時間を要していた動画圧縮などの作業の効率化を図ることができそうだ。

2 件のコメント:

  1. もし良ければ教えて下さい。
    Ryzen+グラボパススルーした場合、パススルーされたVM以外のVMは、グラボが存在せずRDPなどでも描画できないのでしょうか?

    グラボパススルーVM1台
    それ以外のVMを複数
    で運用したい場合、グラボ2枚刺しか、APU+グラボ1枚が必要なのかと思っていますが、実際はどうなのかなと。

    返信削除
    返信
    1. コメント確認遅くなりました。

      パススルーされたVM以外は、通常のVMwareの仮想ビデオカードが付きますので、仮想コンソールでもRDPでも画面の描画は問題なく可能です。
      ※実際、私の環境はパススルーした1台のVMと複数台のVMで構成しています。

      ただし、ESXi自体の画面は描画されなくなるため、Web管理画面のみでアクセスする形となります。

      削除

人気の投稿