NVIDIA GPUでパススルーを有効にするには、ホストBIOSを正しく構成する必要があります。また、これらの高速化されたワークロードを実行する予定の仮想マシンは、特定の要件を満たしている必要があります。このセクションでは、これらすべての要件について説明します。
この記事は、PCIデバイスで合計16 GBを超えるサイズのメモリー領域にマッピングする場合にのみ関連します。VMware KB 1010789で公開されている手順に従って、vSphereでパススルー デバイスを有効にします。原則として、16 GBを超えるメモリー マッピングを必要とするカードはハイエンド カードです。仮想マシン内でそれらをパススルー モードで使用できるようにするには、この記事の手順に従う必要があります。
これらのハイエンドPCIデバイスに必要な大容量メモリー領域をサポートするようにホストBIOSを構成する必要があります。これを有効にするには、[Memory Mapped I/O above 4GB]のホストBIOS設定を有効にします。
注:これらの設定は、BIOS起動モードがUEFIに設定されている場合にのみ必要です。レガシー モードまたはBIOSモードの場合は、以下を無視できます。
これらの大容量メモリー マッピングにアクセスする方法については、VMwareサイト(『Guest OS must boot with EFI』)を参照してください。つまり、VMでEFIを有効にしてから、ゲストOSのEFIインストールを実行する必要があります。
取り付けられたPCI互換GPUハードウェア デバイスは、vSphereハイパーバイザーにインストールされた特定のドライバーなしで、サーバーの起動時にまずハイパーバイザーによって認識されます。
vSphereでは、すべてのPCIデバイスをこのように認識します。[vSphere Client]ツールに表示されるPCIデバイスのリストは、作業中の特定のホスト サーバーを選択し、メニューの選択肢に従って確認できます。
"[Configure] > [Hardware] > [PCI Devices] > [Edit]を選択して、リストを表示します(次の図2の例を参照
特定のGPUデバイスでDirectPath I/Oが以前に有効になっていない場合は、NVIDIAデバイスの例に示すように、デバイス エントリーのチェック ボックスをクリックして、GPUデバイスをダイレクト パスI/O(パススルー)モードにすることができます。
上記の要件を満たしたら、ファイルを直接変更するか、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はパススルー モードでデバイスを使用して正しく起動するはずです。
vSphere Clientで再度仮想マシンを選択し、オプションを使用します。
"設定 > VMオプションの編集 >高度な > 構成パラメーター > 構成の編集」を選択して、以下に示すPCI関連オプションのリストを表示します。
「64bitMMIOSizeGB」パラメーターの値は、単純なアプローチを使用して計算します。このVMに渡すハイエンドPCI GPUデバイスの数をカウントします。これは、1台以上のGPUです。その数に16を掛けて、次の2の累乗に切り上げます。
例えば、1台のVMで2台のGPUデバイスにパススルー モードを使用する場合、値は次のようになります。4 * 16 = 64で、次の2の累乗に切り上げると、128になります。
このセクションでは、GPUデバイスをVMに割り当てる方法について説明します。GPUデバイスを割り当てる前に、仮想マシンの電源をオフにします。
仮想マシンによるPCIデバイスへのアクセスを有効にするには、vSphere Clientで仮想マシンを選択し、[Edit Settings]オプションを使用してPCIデバイス リストまでスクロール ダウンします。お使いのデバイスがまだリストにない場合は、[Add New Device]ボタンを使用してリストに追加します。追加すると、仮想マシンの設定は図7に示すようになります。この例では、関連するエントリーは「PCI Device 0」です。
PCIデバイスがVMに割り当てられている場合、その仮想マシンでは、VMに対してフル構成のメモリー サイズ分のメモリー予約が必要です。これを行うには、vSphere ClientでVMを選択し、[Edit Settings > Virtual Hardware > Memory]を使用して[Reservation]領域にアクセスして値を変更します
最後に、仮想マシンの電源を入れます。仮想マシンの電源を入れたら、ゲストOSにログインし、使用するGPUカードが存在することを確認します。
"lspci | grep nvidia"
または
これで、GPUはパススルー モードでアプリケーションを使用する準備が整いました。
上記の手順に従っても、デバイスが有効な状態でVMが正しく起動しない場合は、このセクションの資料が役立つ可能性があります。以下の提案を試しても問題が解決しない場合は、Dellサポートにお問い合わせください。
マッピングの問題:
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で「above 4GB」のマッピングが正しく有効になっていないか、VMXエントリーを正しく指定しなかったことを示します。
デバイスを使用できない:
上記のすべての手順に従ってVMを正常に起動したが、ゲストOSでnvidia-smiユーティリティーを実行すると、次のようなメッセージが表示される場合:
1 | Unable to determine the device handle for GPU 0000:13:00.0: Unknown Error |
NVIDIAに直接問い合わせるか、この文字列を使用してWeb検索を実行して、役に立つ可能性のある追加情報を見つけることをお勧めします。