k8sでQSVを利用する

TL;DR

  • intel-device-plugins-operatorを導入する
  • .spec.containers[].resourcesの設定を行う
  • PodからQSVが使えることを確認する

はじめに

前回 の続きです。
ドキュメント通り入れるだけですが作業ログとして残します。

環境

  • k8s v1.36.2
  • intel-device-plugins-operator v0.36.0

intel-device-plugins-operatorを導入する

https://intel.github.io/intel-device-plugins-for-kubernetes/cmd/operator/README.html#installation

を参考に入れていきます。

NFDのインストール

NFDを導入して、動作確認をします。

1# deploy NFD
2kubectl apply -k 'https://github.com/intel/intel-device-plugins-for-kubernetes/deployments/nfd?ref=v0.36.0'
3# deploy NodeFeatureRules
4kubectl apply -k 'https://github.com/intel/intel-device-plugins-for-kubernetes/deployments/nfd/overlays/node-feature-rules?ref=v0.36.0'
1kubectl get pod -n node-feature-discovery
2NAME                          READY   STATUS    RESTARTS   AGE
3nfd-gc-df4cc89c-285g4         1/1     Running   1          30h
4nfd-master-5dc96497fb-bfxv7   1/1     Running   1          30h
5nfd-worker-kk4kj              1/1     Running   1          30h

cert-managerのインストール

microk8sを使っている関係でプラグインを有効化して完了

1microk8s enable cert-manager

Device Plugin Operatorのインストール

ドキュメント通りapplyするのみ

1kubectl apply -k 'https://github.com/intel/intel-device-plugins-for-kubernetes/deployments/operator/default?ref=v0.36.0'

GPU Pluginのインストール

こちらもドキュメント通り

1kubectl apply -f https://raw.githubusercontent.com/intel/intel-device-plugins-for-kubernetes/main/deployments/operator/samples/deviceplugin_v1_gpudeviceplugin.yaml

Podからの利用

nodeからi915が利用可能なことを確認します

1kubectl get node -o 'jsonpath={.items[*].status.allocatable}'
2{"cpu":"4","ephemeral-storage":"236209612Ki","gpu.intel.com/i915":"10","gpu.intel.com/monitoring":"1","hugepages-2Mi":"0","memory":"10081868Ki","pods":"110"}

利用するように適宜設定します

1    resources:
2      limits:
3        gpu.intel.com/i915: "1"
4      requests:
5        gpu.intel.com/i915: "1"

konomi TVのdockerイメージではQSVが利用出来るようになっているので、設定を変更して適用しておきます。

1general:
2-   encoder: 'FFmpeg'
3+   encoder: 'QSVEncC'

この状態で適当なチャンネルを開いて再生すると、QSVが利用されるようになっています。
前回のホストに入れた intel_gpu_top で実際に利用されていることを確認します。

1sudo intel_gpu_top
2intel-gpu-top: 8086:46d1 @ /dev/dri/card1 -  101/ 632 MHz;   0% RC6;      238 irqs/s
3
4         ENGINES     BUSY                                                 MI_SEMA MI_WAIT
5       Render/3D    9.12% |████▏                                        |      0%      0%
6         Blitter    0.00% |                                             |      0%      0%
7           Video    9.13% |████▏                                        |      0%      0%
8    VideoEnhance    7.97% |███▋                                         |      0%      0%