PowerEdge:vSphere上の仮想マシンでGPUを使用すると、PCIパススルーで「Module 'DevicePowerOn' Power on Failed」が発生する
Summary: ESXiホストでPCIデバイスのパススルーを構成してVMにデバイスを追加した後に、VMがオンになりません。80%でスタックし、「必要なページの総数(4206594)が制限を超えています(917504)」というエラーが発生します。
Instructions
2022-04-22T03:04:15.771Z| vmx| | I005: PCIPassthru: total number of pages needed (4206594) exceeds limit (917504), failing 2022-04-22T03:04:15.771Z| vmx| | I005: Module 'DevicePowerOn' power on failed.

前提条件
NVIDIA GPUのパススルーを有効にするには、ホストBIOSを正しく構成する必要があり、これらの高速化されたワークロードを実行する予定の仮想マシンは、特定の要件を満たしている必要があります。このセクションでは、これらすべての要件について説明します。
対象デバイス
この記事は、PCIデバイスで合計16 GBを超えるサイズのメモリー領域にマッピングする場合にのみ関連します。VMware KB 1010789公開されている手順に従って、vSphereでパススルー デバイスを有効にします。原則として、16 GBを超えるメモリー マッピングを必要とするカードはハイエンド カードです。仮想マシン内でそれらをパススルー モードで使用できるようにするには、この記事の手順に従う必要があります。
ホストBIOS
これらのハイエンドPCIデバイスに必要な大容量メモリー領域をサポートするようにホストBIOSを構成する必要があります。これを有効にするには、[Memory Mapped I/O above 4GB]のホストBIOS設定を有効にします。

注:このオプションは16Gでは使用できませんが、デフォルトで有効になっており、パススルーで48 GBのGPUをVMに割り当てることができます。
ゲストOS
これらの大容量メモリー マッピングにアクセスするには、VMwareサイトに接続します ゲストOSはEFI
ホスト サーバーでのPCIデバイス可用性の編集
取り付けられたPCI互換GPUハードウェア デバイスは、vSphereハイパーバイザーにインストールされた特定のドライバーなしで、サーバーの起動時にまずハイパーバイザーによって認識されます。
vSphereでは、すべてのPCIデバイスをこのように認識します。vSphere Clientツールに表示されるPCIデバイスのリストは、作業中の特定のホスト サーバーを選択し、次のメニューを選択することで確認できます。>の設定 ハードウェア>PCIデバイス>次の図2の例に示すように、編集してリストを表示します
特定のGPUデバイスでDirectPath I/Oが以前に有効になっていない場合は、NVIDIAデバイスの例に示すように、デバイス エントリーのチェック ボックスをクリックして、GPUデバイスをダイレクト パスI/O(パススルー)モードにすることができます。

VMファイルでのハイエンド デバイスの有効化
上記の要件を満たしたら、ファイルを直接変更するか、vSphereクライアントを使用してこれらの機能を追加することにより、VMのVMXファイルに2つのエントリーを追加する必要があります。最初のエントリーは次のとおりです。
pciPassthru.use64bitMMIO="TRUE"
2番目のエントリーを指定するには、簡単な計算が必要です。VMに渡すすべてのGPUデバイス(*)のGPUメモリー サイズを合計し、次の2の累乗に切り上げます。たとえば、4台の16 GB A2デバイスでパススルーを使用する場合、値は次のようになります。32 + 32 = 64で、次の2の累乗に切り上げると、128になります。この値を2番目のエントリーで使用します。
pciPassthru.64bitMMIOSizeGB="128"
VMXファイルにこれら2つの変更を加えたら、VMware KB 1010789標準vSphereの手順に従って、ホスト レベルでパススルー デバイスを有効にし、VMに渡すデバイスを指定します。これで、VMはパススルー モードでデバイスを使用して正しく起動するはずです。
UIでのハイエンド デバイスの有効化
vSphere Clientで、再度仮想マシンを選択し、次のオプションを使用します。設定の編集>VMオプション>高度な>構成パラメーター>[Edit Configuration]をクリックして、以下に示すPCI関連オプションのリストを表示します。
![[Configuration Parameters Edit]ページ](https://supportkb.dell.com/img/ka06P0000011gdYQAQ/ka06P0000011gdYQAQ_ja_4.jpeg)
「64bitMMIOSizeGB」パラメーターの値は、単純なアプローチを使用して計算します。このVMに渡すハイエンドPCI GPUデバイスの数をカウントします。これは、1台以上のGPUです。その数に16を掛けて、次の2の累乗に切り上げます。
例えば、1台のVMで2台のGPUデバイスにパススルー モードを使用する場合、値は次のようになります。4 * 16 = 64で、次の2の累乗に切り上げると、128になります。
仮想マシンへのGPUデバイスの割り当て
このセクションでは、GPUデバイスをVMに割り当てる方法について説明します。GPUデバイスを割り当てる前に仮想マシンの電源をオフにします。
PCIデバイスへの仮想マシン アクセスを有効にするには、vSphere Clientで仮想マシンを選択し、[ Edit Settings]オプションを使用して、[ PCI Device]リストまで下にスクロールします。お使いのデバイスがまだリストされていない場合は、[ Add New Device]ボタンを使用してリストに追加します。追加すると、仮想マシンの設定は図7に示すようになります。この例では、関連するエントリーは PCIデバイス0です。

メモリー予約
PCIデバイスがVMに割り当てられている場合、その仮想マシンでは、VMに対してフル構成のメモリー サイズ分のメモリー予約が必要です。これを行うには、vSphere ClientでVMを選択し、[Edit Settings]>[Virtual Hardware>Memory]を使用して[Reservation]領域にアクセスして値を変更します
最後に、仮想マシンの電源を入れます。仮想マシンの電源を入れたら、ゲストOSにログインし、次のコマンドを使用してGPUカードが装着されていることを確認します。
- Linux仮想マシンでは、次のコマンドを使用します。
"lspci | grep nvidia"
- Windowsオペレーティング システムでは、コントロール パネルのデバイス マネージャーを使用して、使用可能なGPUデバイスを確認します
これで、GPUはパススルー モードでアプリケーションを使用する準備が整いました。
Additional Information
トラブルシューティング
上記の手順に従っても、デバイスが有効な状態でVMが正しく起動しない場合は、このセクションの資料が役立つ可能性があります。以下の提案を試しても問題が解決しない場合は、お問い合わせください
マッピングの問題:
VMのvmware.logファイルに次のようなエラーが表示された場合:
1 I120: PCIPassthru: 0000:82:00.0 : Device BAR 0 requested 64-bit memory address that exceeded MPN type (62105227100160)
BIOS設定が、このタイプのパススルー デバイスを有効にするために必要なESXi要件を満たしていません。ESXi 6.0 p4~ESXi 6.5では、PCIデバイス用にマッピングされたメモリーはすべて16 TB未満である必要があります。お使いのBIOSが、ホストのメモリー アドレス空間でPCIメモリー領域がマッピングされる量を制御する機能をサポートしている場合、この問題を回避できる可能性があります。例えば、一部のメーカー(SuperMicroなど)には、このメモリーがマッピングされる量を変更するBIOSオプションがあります。SuperMicroシステムでは、MMIOHBaseパラメーターをデフォルトの56 TBからより低い値に変更できます。Sugonシステムにも、同様のBIOS設定(非表示)があります。お使いのBIOSがこの再マッピング機能をサポートしているかどうかについては、お使いのシステムのベンダーに確認してください。もう1つの解決策として、ESXiバージョンを6.5 u1以降にアップデートします。このバージョン以降、16TBの制限が削除されています。
不正な構成:
次の形式のvmware.logファイルにエラーがあります。
1 2016-07-07T09:18:37.624Z| vmx| I120: PCIPassthru: total number of pages needed (2097186) exceeds limit (917504), failing
前述の「ホストBIOS」セクションで説明されているように、ホストBIOSで4 GBを超えるマッピングを正しく有効にしていないか、VMXエントリーが正しく指定されていないことを示します
デバイスを使用できません:
上記のすべての手順に従い、VM が正常に起動したにもかかわらず、 nvidia-smi ユーティリティをゲスト OS に含めます。
1 Unable to determine the device handle for GPU 0000:13:00.0: Unknown Error
NVIDIAに直接問い合わせるか、この文字列を使用してWeb検索を実行し、役立つ可能性のある追加情報を見つけることをお勧めします。