16.4.4. Intel vRAN Dedicated Accelerator ACC100에 대한 SR-IOV-FEC Operator 구성
Intel vRAN Dedicated Accelerator ACC100을 프로그래밍하면 vRAN 워크로드에서 FEC를 가속화하는 데 사용되는 SRIOV(Single Root I/O Virtualization) VF(가상 기능) 장치가 표시됩니다. Intel vRAN Dedicated Accelerator ACC100은 4G 및 5G VRAN(가상화된 라디오 액세스 네트워크) 업무 부하를 가속화합니다. 그 결과 상용 상용 플랫폼에서의 전반적인 컴퓨팅 용량이 증가합니다. 이 장치는 Bryce 마운트라고도 합니다.
SR-IOV-FEC Operator는 vRAN L1 애플리케이션에서 FEC 프로세스를 가속화하는 데 사용되는 전달 오류 수정(FEC) 장치의 관리를 처리합니다.
SR-IOV-FEC Operator 구성에는 다음이 포함됩니다.
- FEC 장치의 VF(가상 기능) 생성
- VF를 적절한 드라이버에 바인딩
- 4G 또는 5G 배포에서 원하는 기능에 대한 VF 큐 구성
FEC(전달 오류 수정)의 역할은 메시지의 특정 비트를 손실하거나 무시할 수 있는 전송 오류를 수정하는 것입니다. 전송 미디어, 간섭 또는 신호 강도의 노이즈로 인해 메시지를 손실하거나 숨길 수 있습니다. FEC가 없으면 가파른 메시지를 다시 전송하여 네트워크 부하에 추가하고 처리량과 대기 시간에 영향을 미칩니다.
사전 요구 사항
- Intel FPGA ACC100 5G/4G 카드
- FEC Accelerator용 OpenNESS Operator와 함께 설치된 노드 또는 노드
- 노드의 BIOS에서 글로벌 SR-IOV 및 VT-d 설정 활성화
- Performance Addon Operator로 구성된 RT 커널
-
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
vran-acceleration-operators
프로젝트로 변경합니다.$ oc project vran-acceleration-operators
SR-IOV-FEC Operator가 설치되었는지 확인합니다.
$ oc get csv -o custom-columns=Name:.metadata.name,Phase:.status.phase
출력 예
Name Phase sriov-fec.v1.1.0 Succeeded
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의 사양을 입력으로 사용하고 검색된 NIC를 구성합니다.
-
지원되는 vRAN FEC 액셀러레이터 장치 중 하나를 포함하는 모든 노드를 검색합니다.
$ oc get sriovfecnodeconfig
출력 예
NAME CONFIGURED node1 Succeeded
SR-IOV FEC 액셀러레이터 장치의 물리적 기능(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
FEC 장치에 가상 함수 및 대기열 그룹 수를 구성합니다.
다음 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
참고이 카드는 그룹당 최대 16개의 큐가 있는 최대 8개의 큐 그룹을 제공하도록 구성됩니다. 큐 그룹은 5G 및 4G 및 Uplink 및 Downlink에 할당된 그룹 간에 나눌 수 있습니다. Intel vRAN Dedicated Accelerator ACC100은 다음을 위해 구성할 수 있습니다.
- 4G 또는 5G 전용
- 4G 및 5G 동시에
구성된 각 VF는 모든 큐에 액세스할 수 있습니다. 각 큐 그룹에는 고유한 우선 순위 수준이 있습니다. 지정된 큐 그룹에 대한 요청은 FEC 장치를 활용하는 vRAN 애플리케이션인 애플리케이션 수준에서 이루어집니다.
CR을 적용합니다.
$ oc apply -f sriovfec_acc100cr.yaml
CR을 적용하면 SR-IOV FEC 데몬이 FEC 장치 구성을 시작합니다.
검증
상태를 확인합니다.
$ 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
로그를 확인합니다.
SR-IOV 데몬의 Pod 이름을 확인합니다.
$ oc get po -o wide | grep sriov-fec-daemonset | grep node1
출력 예
sriov-fec-daemonset-kqqs6 1/1 Running 0 19h
로그를 확인합니다.
$ 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"}
카드의 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