16.4.5. 在 OpenNESS 上验证应用程序 pod 访问和 FPGA 使用情况
OpenNESS 是一种边缘计算软件工具包,可用于在任何类型的网络上添加和管理应用程序和网络功能。
通过构建镜像并为设备运行简单的验证应用程序,验证所有 OpenNESS 功能是否协同工作,包括 SR-IOV 绑定、设备插件、Wire Base Band Device(bbdev)配置和 SR-IOV(FEC)VF 功能。
有关更多信息,请转至 openess.org。
先决条件
- 可选:Intel FPGA PAC N3000 卡
- 带有 n3000-operator 的安装的节点
- 带有 SR-IOV-FEC Operator 的安装的节点
- 使用 Performance Addon Operator 配置的实时内核和巨页
-
以具有
cluster-admin
权限的用户身份登录
流程
通过完成以下操作,为测试创建一个命名空间:
通过创建名为
test-bbdev-namespace.yaml
文件的文件来定义test-bbdev
命名空间,如下例所示:apiVersion: v1 kind: Namespace metadata: name: test-bbdev labels: openshift.io/run-level: "1"
运行以下命令创建命名空间:
$ oc create -f test-bbdev-namespace.yaml
创建以下
Pod
规格,然后在pod-test.yaml
文件中保存 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
注意要测试 ACC100 配置,请通过删除 # 符号取消注释
intel.com/intel_fec_acc100
。要测试 N3000 4G/LTE 配置,请通过删除 # 符号取消注释intel.com/intel_fec_lte
。任何时候只能有一个资源处于活动状态。创建 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
使用远程 shell 登录
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
文件中请求的资源,这可以是以下三个 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
- 虽然可以跳过某些测试,但请确保向量测试通过。