12.2. コンピュートノードでの仮想 GPU の設定
クラウドユーザーが仮想 GPU (vGPU) を使用するインスタンスを作成できるようにするには、物理 GPU を持つコンピュートノードを設定する必要があります。
- vGPU 用のコンピュートノードを指定する。
- 仮想 GPU 用のコンピュートノードを設定する。
- オーバークラウドをデプロイする。
- vGPU を持つインスタンスを起動するための vGPU フレーバーを作成します。
GPU ハードウェアが制限されている場合は、ホストアグリゲートを設定して vGPU コンピュートノードでのスケジューリングを最適化することもできます。仮想 GPU を要求するインスタンスのみを仮想 GPU コンピュートノードにスケジュールするには、仮想 GPU が設定されたコンピュートノードのホストアグリゲートを作成し、Compute スケジューラーが仮想 GPU インスタンスのみをホストアグリゲートに配置するように設定します。詳細は、Creating and managing host aggregates および Filtering by isolating host aggregates を参照してください。
NVIDIA GRID vGPU を使用するには、NVIDIA GRID ライセンス要件に従う共に、セルフホストライセンスサーバーの URL が必要です。詳細は、Virtual GPU License Server Release Notes の Web ページを参照してください。
12.2.1. 前提条件
- NVIDIA の Web サイトから、GPU デバイスに対応する NVIDIA GRID ホストドライバー RPM パッケージをダウンロードしている。必要なドライバーを確認するには、NVIDIA ドライバーダウンロードポータル を参照してください。ポータルからドライバーをダウンロードするには、NVIDIA カスタマーとして登録されている必要があります。
- NVIDIA GRID ホストドライバーがインストールされているカスタムオーバークラウドイメージをビルドしている。
12.2.2. 仮想 GPU 用コンピュートノードの指定
仮想 GPU 負荷用のコンピュートノードを指定するには、仮想 GPU ロールを設定するための新規ロールファイルを作成し、GPU 対応のコンピュートノードをタグ付けするための新規オーバークラウドフレーバーおよびリソースクラスを設定する必要があります。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 stackrc
ファイルを取得します。[stack@director ~]$ source ~/stackrc
roles_data_gpu.yaml
という名前で、Controller
、Compute
、およびComputeGpu
ロールが含まれる新しいロールデータファイルを生成します。(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_gpu.yaml \ Compute:ComputeGpu Compute Controller
roles_data_gpu.yaml
を開き、以下のパラメーターおよびセクションを編集または追加します。セクション/パラメーター 現在の値 新しい値 ロールのコメント
Role: Compute
Role: ComputeGpu
ロール名
Compute
ComputeGpu
description
Basic Compute Node role
GPU Compute Node role
ImageDefault
該当なし
overcloud-full-gpu
HostnameFormatDefault
-compute-
-computegpu-
deprecated_nic_config_name
compute.yaml
compute-gpu.yaml
-
オーバークラウド用の GPU 対応コンピュートノードをノード定義のテンプレート
node.json
またはnode.yaml
に追加して、そのノードを登録します。詳細は、director のインストールと使用方法 の オーバークラウドノードの登録 を参照してください。 ノードのハードウェアを検査します。
(undercloud)$ openstack overcloud node introspect --all-manageable \ --provide
詳細は、Director Installation and Usage ガイドの Creating an inventory of the bare-metal node hardware を参照してください。
仮想 GPU コンピュートノード用の
compute-vgpu-nvidia
オーバークラウドフレーバーを作成します。(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-vgpu-nvidia
-
<ram_size_mb>
をベアメタルノードの RAM (MB 単位) に置き換えます。 -
<disk_size_gb>
をベアメタルノード上のディスク容量 (GB 単位) に置き換えます。 <no_vcpus>
をベアメタルノードの CPU 数に置き換えます。注記これらの属性は、インスタンスのスケジューリングには使用されません。ただし Compute スケジューラーは、ディスク容量を使用してルートパーティションのサイズを決定します。
-
ノードリストを取得して UUID を把握します。
(undercloud)$ openstack baremetal node list
GPU 負荷用に指定する各ベアメタルノードに、カスタムの GPU リソースクラスをタグ付けします。
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.GPU <node>
<node>
をベアメタルノードの ID に置き換えてください。compute-vgpu-nvidia
フレーバーをカスタムの GPU リソースクラスに関連付けます。(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_GPU=1 \ compute-vgpu-nvidia
Bare Metal サービスノードのリソースクラスに対応するカスタムリソースクラスの名前を指定するには、リソースクラスを大文字に変換し、すべての句読点をアンダースコアに置き換え、
CUSTOM_
の接頭辞を追加します。注記フレーバーが要求できるのは、ベアメタルリソースクラスの 1 つのインスタンスだけです。
以下のフレーバー属性を設定して、Compute スケジューラーがインスタンスのスケジューリングにベアメタルフレーバー属性を使用するのを防ぎます。
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-vgpu-nvidia
ロールが作成されたことを確認するには、以下のコマンドを入力します。
(undercloud)$ openstack overcloud profiles list
12.2.3. 仮想 GPU 用コンピュートノードの設定およびオーバークラウドのデプロイ
環境内の物理 GPU デバイスに対応する仮想 GPU の種別を取得して割り当て、仮想 GPU 用コンピュートノードを設定するための環境ファイルを準備する必要があります。
手順
- Red Hat Enterprise Linux と NVIDIA GRID ドライバーを一時コンピュートノードにインストールし、そのノードを起動します。
コンピュートノードで、有効にする物理 GPU デバイスに対応する仮想 GPU の種別を確認します。libvirt の場合、仮想 GPU は仲介デバイスまたは
mdev
種別のデバイスです。サポートされているmdev
デバイスを検出するには、以下のコマンドを入力します。[root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/ nvidia-11 nvidia-12 nvidia-13 nvidia-14 nvidia-15 nvidia-16 nvidia-17 nvidia-18 nvidia-19 nvidia-20 nvidia-21 nvidia-210 nvidia-22 [root@overcloud-computegpu-0 ~]# cat /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/nvidia-18/description num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=4096x2160, max_instance=4
ComputeGpu
ロールのNet::SoftwareConfig
をnetwork-environment.yaml
ファイルに登録します。resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::ComputeGpu::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute-gpu.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
以下のパラメーターを
node-info.yaml
ファイルに追加して、GPU コンピュートノードの数および GPU が指定されたコンピュートノード用に使用するフレーバーを指定します。parameter_defaults: OvercloudControllerFlavor: control OvercloudComputeFlavor: compute OvercloudComputeGpuFlavor: compute-vgpu-nvidia ControllerCount: 1 ComputeCount: 0 ComputeGpuCount: 1
gpu.yaml
ファイルを作成し、GPU デバイスの仮想 GPU 種別を指定します。parameter_defaults: ComputeGpuExtraConfig: nova::compute::vgpu::enabled_vgpu_types: - nvidia-18
注記各物理 GPU がサポートするのは 1 つの仮想 GPU 種別だけです。この属性で複数の仮想 GPU 種別を指定した場合は、最初の種別だけが使用されます。
- 更新内容を Compute 環境ファイルに保存します。
その他の環境ファイルと共に新しいロールファイルおよび環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -r /home/stack/templates/roles_data_gpu.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/gpu.yaml \ -e /home/stack/templates/node-info.yaml