17.2. ワイヤレス FEC Accelerator 向けの OpenNESS SR-IOV Operator のインストール

Intel Wireless forward error correction (FEC) Accelerator 向けの OpenNESS Operator のロールは、OpenShift Container Platform クラスター内の Intel vRAN FEC Acceleration ハードウェアで公開されるデバイスをオーケストレーションして管理することです。

最もコンピューター集約型な 4G/LTE および 5G ワークロードの 1 つは、RAN レイヤー 1 (L1) FEC になります。FEC は、信頼性が低い通信チャネルまたはノイズー通信チャネルでデータ転送エラーを解決します。FEC テクノロジーは、再送信を必要とせずに 4G/LTE または 5G データ内のエラーの一部を検出して修正します。

Intel vRAN Dedicated Accelerator ACC100 が提供する FEC デバイスは、vRAN のユースケースに対応しています。

ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator は、FEC デバイスの仮想機能 (VF) を作成し、それらを適切なドライバーにバインドし、4G/LTE または 5G デプロイメントの機能について VF キューを設定します。

クラスター管理者は、OpenShift Container Platform CLI または Web コンソールを使用して、ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator をインストールできます。

17.2.1. CLI の使用によるワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator のインストール

クラスター管理者は、CLI を使用してワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator をインストールできます。

前提条件

  • ベアメタルハードウェアにインストールされたクラスター。
  • OpenShift CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. 以下のアクションを実行して、ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator の namespace を作成します。

    1. 以下の例のように sriov-namespace.yaml という名前のファイルを作成し、vran-acceleration-operators namespace を定義します。

      apiVersion: v1
      kind: Namespace
      metadata:
          name: vran-acceleration-operators
          labels:
             openshift.io/cluster-monitoring: "true"
    2. 以下のコマンドを実行して namespace を作成します。

      $ oc create -f sriov-namespace.yaml
  2. 以下のオブジェクトを作成して、ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator を直前の手順で作成した namespace にインストールします。

    1. 以下の OperatorGroup カスタムリソース (CR) を作成し、YAML を sriov-operatorgroup.yaml ファイルに保存します。

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
          name: vran-operators
          namespace: vran-acceleration-operators
      spec:
          targetNamespaces:
            - vran-acceleration-operators
    2. 以下のコマンドを実行して OperatorGroup CR を作成します。

      $ oc create -f sriov-operatorgroup.yaml
    3. 以下のコマンドを実行して、次の手順に必要な channel の値を取得します。

      $ oc get packagemanifest sriov-fec -n openshift-marketplace -o jsonpath='{.status.defaultChannel}'

      出力例

      stable

    4. 以下の Subscription CR を作成し、YAML を sriov-sub.yaml ファイルに保存します。

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
          name: sriov-fec-subscription
          namespace: vran-acceleration-operators
      spec:
          channel: "<channel>" 1
          name: sriov-fec
          source: certified-operators 2
          sourceNamespace: openshift-marketplace
      1
      .status.defaultChannel パラメーターの直前の手順で取得した値からチャネルの値を指定します。
      2
      certified-operators 値を指定する必要があります。
    5. 以下のコマンドを実行して Subscription CR を作成します。

      $ oc create -f sriov-sub.yaml

検証

  • Operator がインストールされていることを確認します。

    $ oc get csv -n vran-acceleration-operators -o custom-columns=Name:.metadata.name,Phase:.status.phase

    出力例

    Name                                        Phase
    sriov-fec.v1.1.0                            Succeeded

17.2.2. Web コンソールを使用したワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator のインストール

クラスター管理者は、Web コンソールを使用してワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator をインストールできます。

注記

先のセクションで説明されているように Namespace および OperatorGroup カスタムリソース (CR) を作成する必要があります。

手順

  1. OpenShift Container Platform Web コンソールを使用して、ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator をインストールします。

    1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
    2. 利用可能な Operator の一覧から ワイヤレス FEC Accelerator 向け OpenNESS SR-IOV Operator を選択し、Install をクリックします。
    3. Install Operator ページで、All namespaces on the cluster を選択します。次に、Install をクリックします。
  2. オプション: SRIOV-FEC Operator が正常にインストールされていることを確認します。

    1. OperatorsInstalled Operators ページに切り替えます。
    2. ワイヤレス FEC Accelerator 向け OpenNESS SR-IOV OperatorStatusInstallSucceededvran-acceleration-operators プロジェクトに一覧表示されていることを確認します。

      注記

      インストール時に、 Operator は Failed ステータスを表示する可能性があります。インストールが後に InstallSucceeded メッセージを出して正常に実行される場合は、Failed メッセージを無視できます。

      コンソールが Operator がインストールされていることを示していない場合は、以下のトラブルシューティング手順を実行します。

      • OperatorsInstalled Operators ページに移動し、Operator Subscriptions および Install Plans タブで Status にエラーがあるかどうかを検査します。
      • WorkloadsPods ページに移動し、vran-acceleration-operators プロジェクトで Pod のログを確認します。

17.2.3. Intel® vRAN Dedicated Accelerator ACC100 向け SR-IOV FEC Operator の設定

Intel vRAN Dedicated Accelerator ACC100 のプログラミングは、vRAN ワークロードで前方誤り訂正 (FEC) を加速するのに使用される SR-IOV (Single Root I/O Virtualization) 仮想関数 (VF) デバイスを公開します。Intel vRAN Dedicated Accelerator ACC100 は 4G および 5G vRAN (Virtualized Radio Access Networks) ワークロードを加速します。これにより、市販の既製のプラットフォームの全体的な計算能力が向上します。このデバイスは Mount Bryce としても知られています。

SR-IOV-FEC Operator は、vRAN L1 アプリケーションの FEC プロセスを加速するために使用される FEC デバイスの管理を処理します。

SR-IOV-FEC Operator を設定するには、以下のことを行う必要があります。

  • FEC デバイスの VF (Virtual Function) の作成
  • VF を適切なドライバーにバインド
  • 4G または 5G デプロイメントで希望する機能向け VF キューの設定

前方誤り訂正 (FEC) のロールは、メッセージ内の特定のビットが失われたり、文字化けしている可能性がある転送エラーの修正です。伝送メディアのノイズ、干渉、または信号強度の低下により、メッセージが失われたり文字化けしたりする可能性があります。FEC を使用しないと、文字化けしたメッセージは、ネットワーク負荷に加え、スループットとレイテンシーに影響を与える必要があります。

前提条件

  • Intel FPGA ACC100 5G/4G カード。
  • ワイヤレス FEC Accelerator 向け OpenNESS Operator でインストールされる 1 つまたは複数のノード。
  • ノードの BIOS でグローバル SR-IOV および VT-d 設定を有効にします。
  • Performance Addon Operator で設定された RT カーネル。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. vran-acceleration-operators プロジェクトに切り替えます。

    $ oc project vran-acceleration-operators
  2. SR-IOV-FEC Operator がインストールされていることを確認します。

    $ oc get csv -o custom-columns=Name:.metadata.name,Phase:.status.phase

    出力例

    Name                                        Phase
    sriov-fec.v1.1.0                            Succeeded

  3. sriov-fec Pod が実行していることを確認します。

    $  oc get pods

    出力例

    NAME                                            READY       STATUS      RESTARTS    AGE
    sriov-device-plugin-j5jlv                       1/1         Running     1           15d
    sriov-fec-controller-manager-85b6b8f4d4-gd2qg   1/1         Running     1           15d
    sriov-fec-daemonset-kqqs6                       1/1         Running     1           15d

    • sriov-device-plugin は、FEC 仮想機能をノードの下にあるリソースとして公開します。
    • sriov-fec-controller-manager は CR をノードに適用し、オペランドコンテナーを維持します。
    • sriov-fec-daemonset は、次のことを行います。

      • 各ノードで SRIOV NIC の検出
      • ステップ 6 で定義されたカスタムリソース (CR) のステータスの同期
      • CR の spec を入力として実行し、検出された NIC の設定
  4. サポート対象の vRAN FEC アクセラレーターデバイスのいずれかを含むすべてのノードを取得します。

    $ oc get sriovfecnodeconfig

    出力例

    NAME             CONFIGURED
    node1            Succeeded

  5. 設定する SR-IOV FEC アクセラレーターデバイスの Physical Function (PF) を検索します。

    $ oc get sriovfecnodeconfig node1 -o yaml

    出力例

    status:
        conditions:
        - lastTransitionTime: "2021-03-19T17:19:37Z"
          message: Configured successfully
          observedGeneration: 1
          reason: ConfigurationSucceeded
          status: "True"
          type: Configured
        inventory:
           sriovAccelerators:
           - deviceID: 0d5c
             driver: ""
             maxVirtualFunctions: 16
             pciAddress: 0000:af:00.0 1
             vendorID: "8086"
             virtualFunctions: [] 2

    1
    このフィールドは、カードの PCI アドレスを表示します。
    2
    このフィールドは、仮想関数が空であることを示します。
  6. FEC デバイスの仮想機能とキューグループの数を設定します。

    1. 以下のカスタムリソース (CR) を作成し、YAML を sriovfec_acc100cr.yaml ファイルに保存します。

      注記

      この例では、5G の ACC100 8/8 キューグループ、Uplink 向け 4 キューグループ、および Downlink の別の 4 つのキューグループを設定します。

      apiVersion: sriovfec.intel.com/v1
      kind: SriovFecClusterConfig
      metadata:
        name: config 1
      spec:
        nodes:
         - nodeName: node1 2
           physicalFunctions:
             - pciAddress: 0000:af:00.0 3
               pfDriver: "pci-pf-stub"
               vfDriver: "vfio-pci"
               vfAmount: 16 4
               bbDevConfig:
                 acc100:
                   # Programming mode: 0 = VF Programming, 1 = PF Programming
                   pfMode: false
                   numVfBundles: 16
                   maxQueueSize: 1024
                   uplink4G:
                     numQueueGroups: 0
                     numAqsPerGroups: 16
                     aqDepthLog2: 4
                   downlink4G:
                    numQueueGroups: 0
                    numAqsPerGroups: 16
                    aqDepthLog2: 4
                   uplink5G:
                    numQueueGroups: 4
                    numAqsPerGroups: 16
                    aqDepthLog2: 4
                   downlink5G:
                    numQueueGroups: 4
                    numAqsPerGroups: 16
                    aqDepthLog2: 4
      1
      CR オブジェクトの名前を指定します。指定できる唯一の名前は config です。
      2
      ノード名を指定します。
      3
      SR-IOV-FEC Operator がインストールされているカードの PCI アドレスを指定します。
      4
      作成する仮想関数の数を指定します。Intel vRAN Dedicated Accelerator ACC100 の場合は、16 個の VF をすべて作成します。
      注記

      カードは、グループごとに最大 16 個のキューを持つ最大 8 個のキューを提供するように設定されます。キューグループは、5G と 4G と Uplink と Downlink に割り当てられたグループ間で分割できます。Intel vRAN Dedicated Accelerator ACC100 を設定することができます。

      • 4G または 5G のみ
      • 4G と 5G を同時に

      設定した各 VF は、すべてのキューにアクセスできます。各キューグループの優先度は、それぞれ個別の優先レベルを持ちます。特定のキューグループの要求はアプリケーションレベル (FEC デバイスを利用する vRAN アプリケーション) から行われます。

    2. CR を適用します。

      $ oc apply -f sriovfec_acc100cr.yaml

      CR の適用後、SR-IOV FEC デーモンは FEC デバイスの設定を開始します。

検証

  1. ステータスを確認します。

    $ oc get sriovfecclusterconfig config -o yaml

    出力例

    status:
        conditions:
        - lastTransitionTime: "2021-03-19T11:46:22Z"
          message: Configured successfully
          observedGeneration: 1
          reason: Succeeded
          status: "True"
          type: Configured
        inventory:
          sriovAccelerators:
          - deviceID: 0d5c
            driver: pci-pf-stub
            maxVirtualFunctions: 16
            pciAddress: 0000:af:00.0
            vendorID: "8086"
            virtualFunctions:
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.0
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.1
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.2
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.3
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.4

  2. ログを確認します。

    1. SR-IOV デーモンの Pod 名を判別します。

      $ oc get po -o wide | grep sriov-fec-daemonset | grep node1

      出力例

      sriov-fec-daemonset-kqqs6                      1/1     Running   0          19h

    2. ログを表示します。

      $ oc logs sriov-fec-daemonset-kqqs6

      出力例

      {"level":"Level(-2)","ts":1616794345.4786215,"logger":"daemon.drainhelper.cordonAndDrain()","msg":"node drained"}
      {"level":"Level(-4)","ts":1616794345.4786265,"logger":"daemon.drainhelper.Run()","msg":"worker function - start"}
      {"level":"Level(-4)","ts":1616794345.5762916,"logger":"daemon.NodeConfigurator.applyConfig","msg":"current node status","inventory":{"sriovAccelerat
      ors":[{"vendorID":"8086","deviceID":"0b32","pciAddress":"0000:20:00.0","driver":"","maxVirtualFunctions":1,"virtualFunctions":[]},{"vendorID":"8086"
      ,"deviceID":"0d5c","pciAddress":"0000:af:00.0","driver":"","maxVirtualFunctions":16,"virtualFunctions":[]}]}}
      {"level":"Level(-4)","ts":1616794345.5763638,"logger":"daemon.NodeConfigurator.applyConfig","msg":"configuring PF","requestedConfig":{"pciAddress":"
      0000:af:00.0","pfDriver":"pci-pf-stub","vfDriver":"vfio-pci","vfAmount":2,"bbDevConfig":{"acc100":{"pfMode":false,"numVfBundles":16,"maxQueueSize":1
      024,"uplink4G":{"numQueueGroups":4,"numAqsPerGroups":16,"aqDepthLog2":4},"downlink4G":{"numQueueGroups":4,"numAqsPerGroups":16,"aqDepthLog2":4},"uplink5G":{"numQueueGroups":0,"numAqsPerGroups":16,"aqDepthLog2":4},"downlink5G":{"numQueueGroups":0,"numAqsPerGroups":16,"aqDepthLog2":4}}}}}
      {"level":"Level(-4)","ts":1616794345.5774765,"logger":"daemon.NodeConfigurator.loadModule","msg":"executing command","cmd":"/usr/sbin/chroot /host/ modprobe pci-pf-stub"}
      {"level":"Level(-4)","ts":1616794345.5842702,"logger":"daemon.NodeConfigurator.loadModule","msg":"commands output","output":""}
      {"level":"Level(-4)","ts":1616794345.5843055,"logger":"daemon.NodeConfigurator.loadModule","msg":"executing command","cmd":"/usr/sbin/chroot /host/ modprobe vfio-pci"}
      {"level":"Level(-4)","ts":1616794345.6090655,"logger":"daemon.NodeConfigurator.loadModule","msg":"commands output","output":""}
      {"level":"Level(-2)","ts":1616794345.6091156,"logger":"daemon.NodeConfigurator","msg":"device's driver_override path","path":"/sys/bus/pci/devices/0000:af:00.0/driver_override"}
      {"level":"Level(-2)","ts":1616794345.6091807,"logger":"daemon.NodeConfigurator","msg":"driver bind path","path":"/sys/bus/pci/drivers/pci-pf-stub/bind"}
      {"level":"Level(-2)","ts":1616794345.7488534,"logger":"daemon.NodeConfigurator","msg":"device's driver_override path","path":"/sys/bus/pci/devices/0000:b0:00.0/driver_override"}
      {"level":"Level(-2)","ts":1616794345.748938,"logger":"daemon.NodeConfigurator","msg":"driver bind path","path":"/sys/bus/pci/drivers/vfio-pci/bind"}
      {"level":"Level(-2)","ts":1616794345.7492096,"logger":"daemon.NodeConfigurator","msg":"device's driver_override path","path":"/sys/bus/pci/devices/0000:b0:00.1/driver_override"}
      {"level":"Level(-2)","ts":1616794345.7492566,"logger":"daemon.NodeConfigurator","msg":"driver bind path","path":"/sys/bus/pci/drivers/vfio-pci/bind"}
      {"level":"Level(-4)","ts":1616794345.74968,"logger":"daemon.NodeConfigurator.applyConfig","msg":"executing command","cmd":"/sriov_workdir/pf_bb_config ACC100 -c /sriov_artifacts/0000:af:00.0.ini -p 0000:af:00.0"}
      {"level":"Level(-4)","ts":1616794346.5203931,"logger":"daemon.NodeConfigurator.applyConfig","msg":"commands output","output":"Queue Groups: 0 5GUL, 0 5GDL, 4 4GUL, 4 4GDL\nNumber of 5GUL engines 8\nConfiguration in VF mode\nPF ACC100 configuration complete\nACC100 PF [0000:af:00.0] configuration complete!\n\n"}
      {"level":"Level(-4)","ts":1616794346.520459,"logger":"daemon.NodeConfigurator.enableMasterBus","msg":"executing command","cmd":"/usr/sbin/chroot /host/ setpci -v -s 0000:af:00.0 COMMAND"}
      {"level":"Level(-4)","ts":1616794346.5458736,"logger":"daemon.NodeConfigurator.enableMasterBus","msg":"commands output","output":"0000:af:00.0 @04 = 0142\n"}
      {"level":"Level(-4)","ts":1616794346.5459251,"logger":"daemon.NodeConfigurator.enableMasterBus","msg":"executing command","cmd":"/usr/sbin/chroot /host/ setpci -v -s 0000:af:00.0 COMMAND=0146"}
      {"level":"Level(-4)","ts":1616794346.5795262,"logger":"daemon.NodeConfigurator.enableMasterBus","msg":"commands output","output":"0000:af:00.0 @04 0146\n"}
      {"level":"Level(-2)","ts":1616794346.5795407,"logger":"daemon.NodeConfigurator.enableMasterBus","msg":"MasterBus set","pci":"0000:af:00.0","output":"0000:af:00.0 @04 0146\n"}
      {"level":"Level(-4)","ts":1616794346.6867144,"logger":"daemon.drainhelper.Run()","msg":"worker function - end","performUncordon":true}
      {"level":"Level(-4)","ts":1616794346.6867719,"logger":"daemon.drainhelper.Run()","msg":"uncordoning node"}
      {"level":"Level(-4)","ts":1616794346.6896322,"logger":"daemon.drainhelper.uncordon()","msg":"starting uncordon attempts"}
      {"level":"Level(-2)","ts":1616794346.69735,"logger":"daemon.drainhelper.uncordon()","msg":"node uncordoned"}
      {"level":"Level(-4)","ts":1616794346.6973662,"logger":"daemon.drainhelper.Run()","msg":"cancelling the context to finish the leadership"}
      {"level":"Level(-4)","ts":1616794346.7029872,"logger":"daemon.drainhelper.Run()","msg":"stopped leading"}
      {"level":"Level(-4)","ts":1616794346.7030034,"logger":"daemon.drainhelper","msg":"releasing the lock (bug mitigation)"}
      {"level":"Level(-4)","ts":1616794346.8040674,"logger":"daemon.updateInventory","msg":"obtained inventory","inv":{"sriovAccelerators":[{"vendorID":"8086","deviceID":"0b32","pciAddress":"0000:20:00.0","driver":"","maxVirtualFunctions":1,"virtualFunctions":[]},{"vendorID":"8086","deviceID":"0d5c","pciAddress":"0000:af:00.0","driver":"pci-pf-stub","maxVirtualFunctions":16,"virtualFunctions":[{"pciAddress":"0000:b0:00.0","driver":"vfio-pci","deviceID":"0d5d"},{"pciAddress":"0000:b0:00.1","driver":"vfio-pci","deviceID":"0d5d"}]}]}}
      {"level":"Level(-4)","ts":1616794346.9058325,"logger":"daemon","msg":"Update ignored, generation unchanged"}
      {"level":"Level(-2)","ts":1616794346.9065044,"logger":"daemon.Reconcile","msg":"Reconciled","namespace":"vran-acceleration-operators","name":"pg-itengdvs02r.altera.com"}

  3. カードの FEC 設定を確認します。

    $ oc get sriovfecnodeconfig node1 -o yaml

    出力例

    status:
        conditions:
        - lastTransitionTime: "2021-03-19T11:46:22Z"
          message: Configured successfully
          observedGeneration: 1
          reason: Succeeded
          status: "True"
          type: Configured
        inventory:
          sriovAccelerators:
          - deviceID: 0d5c 1
            driver: pci-pf-stub
            maxVirtualFunctions: 16
            pciAddress: 0000:af:00.0
            vendorID: "8086"
            virtualFunctions:
            - deviceID: 0d5d 2
              driver: vfio-pci
              pciAddress: 0000:b0:00.0
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.1
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.2
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.3
            - deviceID: 0d5d
              driver: vfio-pci
              pciAddress: 0000:b0:00.4

    1
    0d5c の値は、FEC デバイスの deviceID の物理機能です。
    2
    0d5d の値は、FEC デバイスの deviceID 仮想機能です。

17.2.4. OpenNESS でのアプリケーション Pod アクセスの確認および ACC100 の使用

OpenNESS は、あらゆるタイプのネットワーク上のアプリケーションおよびネットワーク機能をオンボーディングおよび管理するために使用できるエッジコンピューティングソフトウェアツールキットです。

SR-IOV バインディング、デバイスプラグイン、ワイヤレス Base Band Device (bbdev) 設定、root 以外の Pod 内での SR-IOV (FEC) VF 機能など、すべての OpenNESS 機能がすべて連携していることを確認するには、イメージをビルドし、デバイスの単純な検証アプリケーションを実行できます。

詳細は、openess.org にアクセスします。

前提条件

  • ワイヤレス FEC Accelerator 向け OpenNESS SR-IOV Operator でインストールされる 1 つまたは複数のノード
  • Performance Addon Operator で設定されたリアルタイムカーネルおよび Huge Page

手順

  1. 以下のアクションを実行して、テスト用の namespace を作成します。

    1. 以下の例のように test-bbdev-namespace.yaml という名前のファイルを作成し、test-bbdev namespace を定義します。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: test-bbdev
        labels:
          openshift.io/run-level: "1"
    2. 以下のコマンドを実行して namespace を作成します。

      $ oc create -f test-bbdev-namespace.yaml
  2. 以下の Pod 仕様を作成してから、YAML を pod-test.yaml ファイルに保存します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-bbdev-sample-app
      namespace: test-bbdev 1
    spec:
      containers:
      - securityContext:
          privileged: false
          capabilities:
            add:
            - IPC_LOCK
            - SYS_NICE
        name: bbdev-sample-app
        image: bbdev-sample-app:1.0  2
        command: [ "sudo", "/bin/bash", "-c", "--" ]
        runAsUser: 0 3
        resources:
          requests:
            hugepages-1Gi: 4Gi 4
            memory: 1Gi
            cpu: "4" 5
            intel.com/intel_fec_acc100: '1' 6
          limits:
            memory: 4Gi
            cpu: "4"
            hugepages-1Gi: 4Gi
            intel.com/intel_fec_acc100: '1'
    1
    手順 1 で作成した namespace を指定します。
    2
    コンパイルされた DPDK を含むテストイメージを定義します。
    3
    コンテナーが root ユーザーとして内部で実行するようにします。
    4
    hugepage サイズ hugepages-1Gi および Pod に割り当てられる hugepage の量を指定します。hugepages および分離された CPU は、Performance Addon Operator を使用して設定する必要があります。
    5
    CPU の数を指定します。
    6
    ACC100 5G FEC 設定のテストは、intel.com/intel_fec_acc100 でサポートされています。
  3. Pod を作成します。

    $ oc apply -f pod-test.yaml
  4. Pod が作成されていることを確認します。

    $ oc get pods -n test-bbdev

    出力例

    NAME                                            READY           STATUS          RESTARTS        AGE
    pod-bbdev-sample-app                            1/1             Running         0               80s

  5. リモートシェルを使用して pod-bbdev-sample-app にログインします。

    $ oc rsh pod-bbdev-sample-app

    出力例

    sh-4.4#

  6. Pod に割り当てられる VF を出力します。

    sh-4.4# printenv | grep INTEL_FEC

    出力例

    PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100=0.0.0.0:1d.00.0 1

    1
    これは、仮想関数の PCI アドレスです。
  7. test-bbdev ディレクトリーに移動します。

    sh-4.4# cd test/test-bbdev/
  8. Pod に割り当てられている CPU を確認します。

    sh-4.4# export CPU=$(cat /sys/fs/cgroup/cpuset/cpuset.cpus)
    sh-4.4# echo ${CPU}

    これにより、fec.pod に割り当てられた CPU が出力されます。

    出力例

    24,25,64,65

  9. test-bbdev アプリケーションを実行してデバイスをテストします。

    sh-4.4# ./test-bbdev.py -e="-l ${CPU} -a ${PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100}" -c validation \ -n 64 -b 32 -l 1 -v ./test_vectors/*"

    出力例

    Executing: ../../build/app/dpdk-test-bbdev -l 24-25,64-65 0000:1d.00.0 -- -n 64 -l 1 -c validation -v ./test_vectors/bbdev_null.data -b 32
    EAL: Detected 80 lcore(s)
    EAL: Detected 2 NUMA nodes
    Option -w, --pci-whitelist is deprecated, use -a, --allow option instead
    EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
    EAL: Selected IOVA mode 'VA'
    EAL: Probing VFIO support...
    EAL: VFIO support initialized
    EAL:   using IOMMU type 1 (Type 1)
    EAL: Probe PCI driver: intel_fpga_5ngr_fec_vf (8086:d90) device: 0000:1d.00.0 (socket 1)
    EAL: No legacy callbacks, legacy socket not created
    
    
    
    ===========================================================
    Starting Test Suite : BBdev Validation Tests
    Test vector file = ldpc_dec_v7813.data
    Device 0 queue 16 setup failed
    Allocated all queues (id=16) at prio0 on dev0
    Device 0 queue 32 setup failed
    Allocated all queues (id=32) at prio1 on dev0
    Device 0 queue 48 setup failed
    Allocated all queues (id=48) at prio2 on dev0
    Device 0 queue 64 setup failed
    Allocated all queues (id=64) at prio3 on dev0
    Device 0 queue 64 setup failed
    All queues on dev 0 allocated: 64
    + ------------------------------------------------------- +
    == test: validation
    dev:0000:b0:00.0, burst size: 1, num ops: 1, op type: RTE_BBDEV_OP_LDPC_DEC
    Operation latency:
            avg: 23092 cycles, 10.0838 us
            min: 23092 cycles, 10.0838 us
            max: 23092 cycles, 10.0838 us
    TestCase [ 0] : validation_tc passed
     + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +
     + Test Suite Summary : BBdev Validation Tests
     + Tests Total :        1
     + Tests Skipped :      0
     + Tests Passed :       1 1
     + Tests Failed :       0
     + Tests Lasted :       177.67 ms
     + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +

    1
    一部のテストはスキップできますが、ベクターテストに合格していることを確認してください。