17.2. NVIDIA vGPU デバイスの管理
vGPU 機能を使用すると、物理的な NVIDIA GPU デバイスを、複数の仮想デバイスに分割できます。これらのデバイスは、仮想 GPU として複数の仮想マシンに割り当てることができます。これにより、この仮想マシンが、1 つの物理 GPU のパフォーマンスを共有できます。
仮想マシンに vGPU デバイスを割り当てると、vGPU の作成に使用された物理 GPU のパフォーマンスに悪影響を与える可能性があります。
17.2.1. NVIDIA vGPU デバイスのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
最新の NVIDIA ハードウェアを搭載した RHEL 10 ホストシステム上で、仮想マシン (VM) に NVIDIA 仮想 GPU(vGPU) を割り当てるには、Single Root I/O Virtualization (SR-IOV) に基づくデバイス割り当てを使用します。
SR-IOV ベースの vGPU を設定するには、GPU デバイス用の NVIDIA vGPU ドライバーをダウンロードし、物理 GPU デバイスの Virtual Function (VF) 上に vGPU インスタンスを設定し、そのインスタンスを仮想マシンに割り当てる必要があります。
前提条件
- NVIDIA のソフトウェアグラフィックドライバーをインストールしている。手順については、NVIDIA ドキュメントの Installing the NVIDIA vGPU software graphics driver on Red Hat distributions from an RPM package を参照してください。
使用中の GPU デバイスが、ベンダー固有の SR-IOV デバイス割り当てをサポートしている。これが該当するか確認するには、NVIDIA グラフィックドライバーと一緒にインストールされる
nvidia-smiツールを使用します。# nvidia-smi -q | grep "Host VGPU Mode"正常な出力:
Host VGPU Mode : SR-IOVSR-IOV 割り当てをサポートしていない旧型の NVIDIA デバイスに基づいて vGPU をセットアップするには、仲介デバイスを使用します。手順については、NVIDIA vGPU レガシーデバイスのセットアップ を参照してください。
物理 GPU デバイスの Virtual Function (VF) を有効にし、NVIDIA vGPU で使用する VF のスロット、バス、ドメイン、およびファンクションの各識別子を取得済みである。手順については、NVIDIA ドキュメントの Preparing the virtual function for an NVIDIA vGPU that supports SR-IOV on a Linux with KVM hypervisor を参照してください。
例として、次の手順では、ドメイン
0000、バス41、スロット02、およびファンクション3を持つ VF を使用します。この VF の完全な ID は0000:41:02.3です。
手順
NVIDIA ソフトウェアのインストーラーで /etc/modprobe.d/nvidia-installer-disable-nouveau.conf ファイルが作成されなかった場合は、/etc/modprobe.d/ に任意の名前で
confファイルを作成し、そのファイルに以下の行を追加します。blacklist nouveau options nouveau modeset=0vGPU に使用する VF のディレクトリーに移動します。
# cd /sys/bus/pci/devices/<domain>\:_<bus>_\:_<slot>_.<function>/nvidia以下に例を示します。
# cd /sys/bus/pci/devices/0000\:41\:02.3/nvidiaオプション: ディレクトリーに
creatable_vgpu_typesファイルとcurrent_vgpu_typeファイルが含まれていることを確認します。-r--r--r-- 1 root root 4096 Aug 3 00:39 creatable_vgpu_types -rw-r--r-- 1 root root 4096 Aug 3 00:39 current_vgpu_typeオプション:VF 上に vGPU インスタンスがまだ作成されていないことを確認します。
# cat current_vgpu_typeこのコマンドの出力が
0の場合、VF 上に vGPU がまだ作成されていません。creatable_vgpu_typesファイルを調べて、VF 上に作成可能な vGPU タイプを特定します。# cat current_vgpu_type出力例:
NVIDIA A40-1Q 557 NVIDIA A40-2Q 558 NVIDIA A40-3Q 559 NVIDIA A40-4Q 560 NVIDIA A40-6Q 561使用したい vGPU タイプを選択し、対応する ID を
current_vgpu_typeファイルに追加します。たとえば、次のコマンドは VF 上に
A40-4QvGPU タイプのインスタンスを作成します。# echo 560 > current_vgpu_typeオプション:VF 上で vGPU タイプが正しく設定されていることを確認します。
# cat current_vgpu_type560-
オプション:
creatable_vgpu_typesファイルが空であることを確認してください。これは、VF 上に vGPU インスタンスを作成できなくなることを意味します。 vGPU デバイスを割り当てる仮想マシンの XML 設定を開きます。
# virsh edit <vm-name>仮想マシンのビデオモデルタイプの設定を
noneに設定します。<video> <model type='none'/> </video>前の手順で vGPU インスタンスを作成した VF の ID 値を含む
<hostdev>セクションを追加します。<hostdev mode='subsystem' type='pci' managed='no' display='on' ramfb='on'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x3'/> </source> </hostdev>仮想マシンに複数の vGPU を割り当てる場合は、それぞれを異なる VF に割り当てる必要があります。以下に例を示します。
<hostdev mode='subsystem' type='pci' managed='no' display='on' ramfb='on'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x3'/> </source> </hostdev> <hostdev mode='subsystem' type='pci' managed='no'> <source> <address domain='0x0000' bus='0x41' slot='0x02' function='0x4'/> </source> </hostdev>- XML 設定を保存します。
- 仮想マシンが実行中の場合は、再起動します。
検証
仮想マシンを起動し、ゲストオペレーティングシステムが仮想デバイスを NVIDIA GPU として検出することを確認します。たとえば、仮想マシンが Linux を使用している場合は、以下のとおりとなります。
# lspci -d 10de: -k 07:00.0 VGA compatible controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 32GB] (rev a1) Subsystem: NVIDIA Corporation Device 12ce Kernel driver in use: nvidia Kernel modules: nouveau, nvidia_drm, nvidia
次のステップ