|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
vGPUサポート
SUSE Virtualizationは、シングルルートIO仮想化(SR-IOV)のためにNVIDIA GPUサポートを共有することができます。この追加機能は、pcidevices-controllerアドオンによって提供され、`sriov-manage`を利用してGPU管理を行います。
GPUがSR-IOVをサポートしているかどうかを確認するには、デバイスのドキュメントをチェックしてください。SR-IOVをサポートするNVIDIA vGPUの作成に関する詳細は、 NVIDIAのドキュメントを参照してください。
GPUデバイス上でvGPUのライフサイクルを管理するには、nvidia-driver-toolkitアドオンを有効にする必要があります。
使用方法
-
UIで、*Advanced → SR-IOV GPU Devices*に移動し、次の内容を確認してください:
-
GPUデバイスがスキャンされました。
-
関連する`sriovgpudevices.devices.harvesterhci.io`オブジェクトが作成されました。
-
-
有効にしたいデバイスを見つけて、*⋮ → 有効にする*を選択してください。
-
*vGPUデバイス*画面に移動し、関連する`vgpudevices.devices.harvesterhci.io`オブジェクトを確認してください。
pcidevices-controllerがvGPUデバイスをスキャンし、SUSE Virtualization UIがデバイス情報を表示するまで、しばらくお待ちください。
-
vGPUを選択し、プロファイルを設定してください。
プロファイルのリストは、GPUおよびホストの基盤となる/sysツリーに依存します。利用可能なプロファイルとその機能に関する詳細は、 NVIDIAのドキュメントを参照してください。
最初のプロファイルを選択すると、NVIDIAドライバーは残りのvGPUに対して利用可能なプロファイルを自動的に設定します。
-
vGPUを新しいまたは既存のVMに接続してください。
vGPUがVMに割り当てられた後は、vGPUが削除されるまでVMを無効にできない場合があります。
MIG対応のvGPUデバイス
|
以下の情報は、A100、H100、H200などのマルチインスタンスGPU(MIG)ベースのパーティショニングをサポートするNVIDIA GPUにのみ適用されます。 |
SUSE Virtualizationは MIG対応のvGPUを仮想マシン間で共有できるようにします。MIG対応のvGPUは、MIG対応の物理GPU内のGPUインスタンスに存在します。各MIG対応のvGPUは、計算エンジンやビデオデコードエンジンを含むGPUインスタンスのエンジンに独占的にアクセスできます。
SUSE Virtualizationは、検出されたGPUがMIGベースのパーティショニングをサポートしている場合にのみ`MIGConfiguration`オブジェクトを作成します。
MIG対応のvGPUデバイスを有効にする
-
SUSE VirtualizationのUIで、*Advanced → vGPU MIG設定*に移動し、以下を確認してください:
-
GPUデバイスをサポートするためのMIG設定が作成されました。
-
関連する`migconfiguration.devices.harvesterhci.io`オブジェクトが作成されました。
-
-
GPUのMIGプロファイルを定義し、MIG設定を有効にしてください。
MIG設定および利用可能な組み合わせに関する情報は、GPUのドキュメントを参照してください。
-
*Advanced → vGPUデバイス*に移動し、MIG設定に関連付けられたvGPUデバイスを有効にしてください。
新しく作成されたMIGプロファイルは、有効なvGPUタイプとして利用可能です。
有効にすると、vGPUデバイスは仮想マシンで使用できます。
制限
複数のvGPUを接続する
VMに複数のvGPUを接続することは、以下の理由で失敗する可能性があります:
-
すべてのvGPUプロファイルが複数のvGPUの接続をサポートしているわけではありません。 NVIDIAのドキュメントには、この機能をサポートするvGPUプロファイルが一覧されています。例えば、NVIDIA A2またはA16 GPUを使用する場合、QシリーズのvGPUのみが複数のvGPUを接続できることに注意してください。
-
VM定義内のGPUデバイスは、`ramFB`を有効にできるのは1つだけです。複数のvGPUを接続するには、VMの設定(YAML)を編集し、すべての非プライマリvGPUデバイスに`virtualGPUOptions`を追加する必要があります。
virtualGPUOptions: display: ramFB: enabled: false
使用可能なvGPUの上限
vGPUサポートがGPUで有効になっている場合、NVIDIAドライバーはデフォルトで16のvGPUデバイスを作成します。最初のプロファイルを選択すると、NVIDIAドライバーは残りのvGPUに対して利用可能なプロファイルを自動的に設定します。
使用されるプロファイルは、各GPUに対して利用可能なvGPUの最大数も決定します。最大数に達すると、残りのvGPUに対してプロファイルを選択できず、それらのデバイスを構成することはできません。
例 (NVIDIA A2 GPU):
`NVIDIA A2-4Q`プロファイルを選択すると、4つのvGPUデバイスのみを構成できます。これらのデバイスが構成されると、残りのvGPUに対してプロファイルを選択することはできません。
技術的な詳細
pcidevices-controllerは、次のCRDを導入します:
-
sriovgpudevices.devices.harvesterhci.io
-
vgpudevices.devices.harvesterhci.io
起動時に、pcidevices-controllerはSR-IOV vGPUデバイスをサポートするNVIDIA GPUをホストでスキャンします。そのようなデバイスが見つかると、それらはCRDとして表現されます。
例:
apiVersion: devices.harvesterhci.io/v1beta1
kind: SRIOVGPUDevice
metadata:
creationTimestamp: "2024-02-21T05:57:37Z"
generation: 2
labels:
nodename: harvester-kgd9c
name: harvester-kgd9c-000008000
resourceVersion: "6641619"
uid: e3a97ee4-046a-48d7-820d-8c6b45cd07da
spec:
address: "0000:08:00.0"
enabled: true
nodeName: harvester-kgd9c
status:
vGPUDevices:
- harvester-kgd9c-000008004
- harvester-kgd9c-000008005
- harvester-kgd9c-000008016
- harvester-kgd9c-000008017
- harvester-kgd9c-000008020
- harvester-kgd9c-000008021
- harvester-kgd9c-000008022
- harvester-kgd9c-000008023
- harvester-kgd9c-000008006
- harvester-kgd9c-000008007
- harvester-kgd9c-000008010
- harvester-kgd9c-000008011
- harvester-kgd9c-000008012
- harvester-kgd9c-000008013
- harvester-kgd9c-000008014
- harvester-kgd9c-000008015
vfAddresses:
- "0000:08:00.4"
- "0000:08:00.5"
- "0000:08:01.6"
- "0000:08:01.7"
- "0000:08:02.0"
- "0000:08:02.1"
- "0000:08:02.2"
- "0000:08:02.3"
- "0000:08:00.6"
- "0000:08:00.7"
- "0000:08:01.0"
- "0000:08:01.1"
- "0000:08:01.2"
- "0000:08:01.3"
- "0000:08:01.4"
- "0000:08:01.5"
SRIOVGPUDeviceが有効になると、pcidevicesコントローラーは`nvidia-driver-toolkit`デーモンセットと連携してGPUデバイスを管理します。
pcidevicesによる/sysツリーの次回スキャン時に、vGPUデバイスはpcidevicesコントローラーによってスキャンされ、VGPUDevices CRDとして管理されます。
NAME ADDRESS NODE NAME ENABLED UUID VGPUTYPE PARENTGPUDEVICE harvester-kgd9c-000008004 0000:08:00.4 harvester-kgd9c true dd6772a8-7db8-4e96-9a73-f94c389d9bc3 NVIDIA A2-4A 0000:08:00.0 harvester-kgd9c-000008005 0000:08:00.5 harvester-kgd9c true 9534e04b-4687-412b-833e-3ae95b97d4d1 NVIDIA A2-4Q 0000:08:00.0 harvester-kgd9c-000008006 0000:08:00.6 harvester-kgd9c true a16e5966-9f7a-48a9-bda8-0d1670e740f8 NVIDIA A2-4A 0000:08:00.0 harvester-kgd9c-000008007 0000:08:00.7 harvester-kgd9c true 041ee3ce-f95c-451e-a381-1c9fe71918b2 NVIDIA A2-4Q 0000:08:00.0 harvester-kgd9c-000008010 0000:08:01.0 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008011 0000:08:01.1 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008012 0000:08:01.2 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008013 0000:08:01.3 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008014 0000:08:01.4 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008015 0000:08:01.5 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008016 0000:08:01.6 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008017 0000:08:01.7 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008020 0000:08:02.0 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008021 0000:08:02.1 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008022 0000:08:02.2 harvester-kgd9c false 0000:08:00.0 harvester-kgd9c-000008023 0000:08:02.3 harvester-kgd9c false 0000:08:00.0
ユーザーが`VGPUDevice`のプロファイルを有効にして選択すると、pcidevicesコントローラーはデバイスを設定し、指定されたデバイスに正しいプロファイルを設定します。
apiVersion: devices.harvesterhci.io/v1beta1
kind: VGPUDevice
metadata:
creationTimestamp: "2024-02-26T03:04:47Z"
generation: 8
labels:
harvesterhci.io/parentSRIOVGPUDevice: harvester-kgd9c-000008000
nodename: harvester-kgd9c
name: harvester-kgd9c-000008004
resourceVersion: "21051017"
uid: b9c7af64-1e47-467f-bf3d-87b7bc3a8911
spec:
address: "0000:08:00.4"
enabled: true
nodeName: harvester-kgd9c
parentGPUDeviceAddress: "0000:08:00.0"
vGPUTypeName: NVIDIA A2-4A
status:
configureVGPUTypeName: NVIDIA A2-4A
uuid: dd6772a8-7db8-4e96-9a73-f94c389d9bc3
vGPUStatus: vGPUConfigured
pcidevicesコントローラーは、さまざまなvGPUプロファイルの詳細をkubeletに通知するvGPUデバイスプラグインも実行します。これはk8sスケジューラーによって使用され、VMが要求するvGPUを正しいノードに配置します。
(⎈|local:harvester-system)➜ ~ k get nodes harvester-kgd9c -o yaml | yq .status.allocatable cpu: "24" devices.kubevirt.io/kvm: 1k devices.kubevirt.io/tun: 1k devices.kubevirt.io/vhost-net: 1k ephemeral-storage: "149527126718" hugepages-1Gi: "0" hugepages-2Mi: "0" intel.com/82599_ETHERNET_CONTROLLER_VIRTUAL_FUNCTION: "1" memory: 131858088Ki nvidia.com/NVIDIA_A2-4A: "2" nvidia.com/NVIDIA_A2-4C: "0" nvidia.com/NVIDIA_A2-4Q: "2" pods: "200"
pcidevicesコントローラーはkubevirtとの統合も設定し、VMがvGPUを利用できるように、KubeVirt CR内でvGPUデバイスを外部管理デバイスとして公開します。