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
権限を持つユーザーとしてログインします。
手順
以下のアクションを実行して、テスト用の namespace を作成します。
以下の例のように
test-bbdev-namespace.yaml
という名前のファイルを作成し、test-bbdev
namespace を定義します。apiVersion: v1 kind: Namespace metadata: name: test-bbdev labels: openshift.io/run-level: "1"
以下のコマンドを実行して namespace を作成します。
$ oc create -f test-bbdev-namespace.yaml
以下の
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 つだけです。Pod を作成します。
$ oc apply -f pod-test.yaml
Pod が作成されていることを確認します。
$ oc get pods -n test-bbdev
出力例
NAME READY STATUS RESTARTS AGE pod-bbdev-sample-app 1/1 Running 0 80s
リモートシェルを使用して
pod-bbdev-sample-app
にログインします。$ oc rsh pod-bbdev-sample-app
出力例
sh-4.4#
環境変数の一覧を出力します。
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
test-bbdev
ディレクトリーに移動します。sh-4.4# cd test/test-bbdev/
注記ディレクトリーは Pod にあり、ローカルコンピューター上にはない。
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
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
- 一部のテストはスキップできますが、ベクターテストに合格していることを確認してください。