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

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

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

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

前提条件

  • オプション: Intel FPGA PAC N3000 カード
  • n3000-operator でインストールされる 1 つまたは複数のノード
  • SR-IOV-FEC Operator でインストールされる 1 つまたは複数のノード
  • Performance Addon Operator で設定されたリアルタイムカーネルおよび Huge Page
  • cluster-admin 権限を持つユーザーとしてログインします。

手順

  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_5g: '1' 6
            #intel.com/intel_fec_acc100: '1'
            #intel.com/intel_fec_lte: '1'
          limits:
            memory: 4Gi
            cpu: "4"
            hugepages-1Gi: 4Gi
            intel.com/intel_fec_5g: '1'
            #intel.com/intel_fec_acc100: '1'
            #intel.com/intel_fec_lte: '1
    1
    手順 1 で作成した namespace を指定します。
    2
    コンパイルされた DPDK を含むテストイメージを定義します。
    3
    コンテナーが root ユーザーとして内部で実行するようにします。
    4
    hugepage サイズ hugepages-1Gi および Pod に割り当てられる hugepage の量を指定します。hugepages および分離された CPU は、Performance Addon Operator を使用して設定する必要があります。
    5
    CPU の数を指定します。
    6
    N3000 5G FEC 設定のテストは、intel.com/intel_fec_5g でサポートされています。
    注記

    ACC100 設定をテストするには、# 記号を削除して、intel.com/intel_fec_acc100 をコメント解除します。N3000 4G/LTE 設定をテストするには、# 記号を削除して intel.com/intel_fec_lte をコメント解除します。一度にアクティブにできるリソースは 1 つだけです。

  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. 環境変数の一覧を出力します。

    sh-4.4# env

    出力例

    N3000_CONTROLLER_MANAGER_METRICS_SERVICE_PORT_8443_TCP_ADDR=172.30.133.131
    SRIOV_FEC_CONTROLLER_MANAGER_METRICS_SERVICE_PORT_8443_TCP_PROTO=tcp
    DPDK_VERSION=20.11
    PCIDEVICE_INTEL_COM_INTEL_FEC_5G=0.0.0.0:1d.00.0 1
    ~/usr/bin/env
    HOSTNAME=fec-pod

    1
    これは、仮想関数の PCI アドレスです。pod-test.yaml ファイルで要求したリソースに応じて、以下の 3 つの PCI アドレスのいずれかを使用することができます。
    • PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100
    • PCIDEVICE_INTEL_COM_INTEL_FEC_5G
    • PCIDEVICE_INTEL_COM_INTEL_FEC_LTE
  7. test-bbdev ディレクトリーに移動します。

    sh-4.4# cd test/test-bbdev/
    注記

    ディレクトリーは Pod にあり、ローカルコンピューター上にはない。

  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_5G}" -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
    一部のテストはスキップできますが、ベクターテストに合格していることを確認してください。