Re:シルの日々の戯言。

散財が生き甲斐になりかけている、デジタルガジェット大好き自称黄色いネズミの戯言。

一部問題はあるもののESXiでiGPUのパススルー出来た

少し(仕事から)現実逃避して、ご自慢・・・でも無いがVMware vSphere Hypervisor(ESXi)の管理画面をポチポチしていたところ、なにやらiGPU(Intel HD Graphics)がパススルー可能っぽいことに気付きました。
試しにパススルー有効化をしてみたところ、不通に有効化出来たようでステータスが「アクティブ」と表示されました。
f:id:sylvester:20210413120538p:plain

・・・これは、vGPUを目論んだものの上手く行かず、vGPUと勘違いし続けてきたGPUパススルーが出来るチャンスじゃね?・・・と言うことで仕事を少しだけそっちのけでコネコネと触ってみることにしました。
sylve.hatenablog.jp

試した環境について

アレコレ綴る前に、私が試した環境がどんなものなのかを綴っておくことにします。
・・・まぁ、私の場合は過去に戯言のネタで割と晒しているので今更感がありますが、幼稚なナレッジではありますが前提条件とかは明確にしておいた方が何方かのお役に立つかも知れませんし・・・。

  • ESXiのバージョン
    • VMware vSphere Hypervisor 7(ESXi-7.0U1d-17551050-standard)
    • (この戯言日記を書いている時点で)最新の7系統で、最新のUpdateを適用させた環境です。
  • ハードウェア
  • 適用予定の仮想マシンOS
    • Windows10 Pro 20H2 (x64)
      • 現在の環境向けのESXi管理用・・・だったが、リモートデスクトップ接続経由で使う踏み台マシンとして使っちゃってる奴。

一個人がイキがってESXiを動かしている環境と思ってください。
記載の通り、ガチガチなサーバ向けハードウェアではありません。あくまで私個人がニワカ知識程度でESXiを触れる・冗長性皆無のストレージ構成で手軽に仮想マシンを動かして楽しむ程度の環境です。

iGPUパススルー設定方法

やり方は簡単です。
iGPU(私の環境ではIntel HD Graphics 530)をチェックして、メニューの「パススルーの切り替え」をクリックするだけでOKです。
f:id:sylvester:20210413120538p:plain

私の場合は再起動不要で有効となりました。dGPU(PCIeスロットに差すタイプで、俗に言うグラボ)を利用する場合は再起動を求められる場合もありますので、再起動を求められたら再起動してください。*2

仮想マシン側の設定

パススルー側は以上でOK、あとはパススルーしたGPUを利用したい仮想マシン側の設定です。
仮想マシン側の設定は、はてな村の住人が必要な情報を公開しています。
naba-san.hatenablog.com

・・・ESXi6.7の時点で実現出来てたんですね。*3

情報は掲載されていますが、私も要所だけスクリーンショットを取得して綴っておくこととします。
設定箇所は3か所、いずれも割り当てたい仮想マシンの設定になります。

1つ目は、仮想マシンの設定パラメータに手動で以下のキーを入力します。
これを忘れるとデバイスマネージャー上でコード31を吐いてデバイスドライバが入りません。
f:id:sylvester:20210413122605p:plain

hypervisor.cpuid.v0 FALSE

2つ目は、仮想マシンPCIバイスを追加します。
メニューから投入するだけでOKに加え、パススルーデバイスを複数設定していなければ自動的にパススルーさせたデバイス(私の場合はIntel HD Graphics 530)が選択されるかと思います。
f:id:sylvester:20210413122812p:plain

3つ目は、仮想マシンのメモリ設定、予約欄のメモリを割り当てメモリ容量を同じサイズを指定します。
私の場合は6GBを割り当ててますが、予約欄に同じく6GB(またはMB単位変換の値、右側でMB/GB切り替え可)を指定します。*4
f:id:sylvester:20210413122944p:plain

設定は以上、あとは仮想マシンを立ち上げてWindows Update経由でデバイスドライバが当たることを確認するだけです。

動作確認

デバイスドライバが適用されればタスクマネージャーのパフォーマンスタブでGPUが確認できるようになります。*5
f:id:sylvester:20210413123318p:plain

通常時でも「なんか軽いぞ?」と感じられるかも知れませんが、適当な動画サイトの動画を再生させて、再生支援が効いているかどうかを確認すればすぐ分かると思います。
f:id:sylvester:20210413123510p:plain

画像では、(今は仕様変更でベンチマークとして機能しなくなった)ニコニコベンチマークの動画*6を再生させていますが、タスクマネージャー上のGPUのグラフがピョコピョコ反応しているので、無事に仮想マシン上でGPUが機能していることの確認が取れました。

お陰でリモートデスクトップ接続を経由してニコニコ動画を再生させても快適なめらかに再生され、フルスクリーンにしても紙芝居状態にならず、高解像度ディスプレイでスケーリングを効かせフルスクリーン*7で再生させると流石にコマ落ちが出てきますが、多くの場合は再生支援が効いて快適な視聴が楽しめます。

また以前vGPU云々の戯言で触れた記事にある通り、近年のWindows OSはリッチなUIを実現するためにGPUへの依存が増えつつある状況のため、パススルーでGPUが利用できるようになりソフトウェア的な描写が減るので全体的な負荷軽減につながります。*8
cloud.watch.impress.co.jp

iGPUのパススルー有効時の注意事項

個人環境としては良い感じに利用できていますが、iGPUをパススルーさせる場合の注意事項がいくつかあります。
あくまで個人のお遊び環境としての観点ですが、iGPUをパススルーさせようってシチュエーションは恐らく個人用途がメインだと思うので、一応前提条件注意です。*9

  • ESXi自体を再起動させる場合、iGPUのパススルーオフ→オンの操作が必要
    • ESXi自体を再起動させると(iGPUは)認識はするものの、「パススルー/再起動」の旨のメッセージが出ます。そのメッセージに従い再起動させても「パススルー/再起動」の表示は変わらないので、パススルーのオフ→オンと操作する必要があります。
    • ちなみに、「パススルー/再起動」の表示状態で(パススルーの設定を施した)仮想マシンを起動させようとエラーとなり起動しません。
  • 物理コンソールの出力が行われない。
    • 少し考えれば当たり前のことですが、唯一のGPUをパススルーで利用することとなるので、コンソール出力(本体HDMI/Display Port端子)にモニターを挿しても何も表示されなくなります。
    • 基本的にWebコンソール経由の操作となるので、よほどのトラブルが発生しない限りは直接コンソールを見ることは無いと思います・・・が、何かあったときに泣きを見ることになりそうです。

パススルーのオフ・オン操作が求められるのは、恐らくは起動時にiGPUでコンソール出力をしているからだと思われますが、今回は「仮想マシンでiGPU使えたバンザーイ!」で終わらす予定なので詳しい理由を調べる気はありません。
ただ、物理コンソールの出力が行えないのはチョット気になる部分です。直近、UPS買おうとか戯言を綴ってて、停電時に停止が必要となった場合にESXiサーバ単体の操作で完結しなくなってしまうのでチョット不安な部分ではあります。
sylve.hatenablog.jp

踏み台用の物理PC購入を検討していたが・・・

一部問題はあるものの、vGPUではないものの、GPUパススルーで仮想マシンのレスポンスが良好になりました。
そのため、VPN経由で侵入した際の専用物理PC買おうかなぁ・・・とか思っちゃってたりしてたのですが、そんな必要は無くなり仮想マシンだけでどうにか出来そうです。

いえ、そもそも論としてESXi上の仮想マシン群を管理するために建てた仮想マシンなので踏み台として使うな・ニコ動見るな*10ってのはありますが近年はWindows自体が結構グラフィック性能を求められるので、快適に利用できるということは好ましいことです。

もしESXiを利用してて、仮想マシンを管理するためにESXi上に仮想マシンを立ててると言う方は、世代次第かも知れませんがiGPUのパススルーをやってみると良いかも知れません。・・・もちろん、コンソール出力が出来なくなる問題が些細な問題と言い切れる方に限定されますが・・・。

*1:厳密にはもう1スロットSSDさせるM.2ソケットがありますが、2230規格で一般的には無線LANカードなどを差し込むソケットのため+日本国内で2230規格のM.2 SSDが入手困難なので搭載していません・・・。

*2:当然のことですが、再起動する場合は起動中の仮想マシンをすべて停止させてから実施してください。

*3:以前はノートPCサーバでHaswell世代でしたが、その頃は出来なかったような・・・。でもこの記事を見るとSkylake世代のCPUなので、CPUの世代の問題なのかしら?

*4:上記2点の設定すませて、さー起動させるぞ!・・・と思ったら起動せず。でも親切丁寧に「この設定が足りません」と出てきてくれたので、最近のシステムは使い手に優しくて助かります。

*5:なかなかデバイスドライバが当たらないなぁ・・・と言う場合は手動でWindows Updateを実行してみてください。また、先のパラメータ追加が漏れていた場合はデバイスマネージャーでコード31でエラーが出てるかと思います。

*6:2016年10月くらいからHTML5対応の兼ね合いでトランスコード・再エンコードが入るようになり、CPUパワーや再生支援機能がどのくらい効いてどのくらいのレベルまで快適に再生できるかをチェックすることが出来なくなりました。

*7:iPad経由でリモートデスクトップ接続を利用するとスケーリング機能が効いて表示させるんです・・・。

*8:実際にはGPU以外もソフトウェア処理でゴリゴリ動いているのでCPU使用率は高めですが、体感では結構軽くなった感があります。

*9:業務でやることは無い・・・と言うか、その手の場合は素直にvGPU使えって話になるわけでして。

*10:すんません、真面目な用途で作った割には仕事PCからリモートデスクトップで繋げてニコ動とか見ちゃってます。