5장. SR-IOV의 RDMA 하위 시스템 구성
RDMA(Remote Direct Memory Access)를 사용하면 두 시스템 간의 직접 메모리 액세스를 통해 두 시스템의 운영 체제 없이 직접 메모리에 액세스할 수 있습니다. SR-IOV(Single Root I/O Virtualization)에서 RDMA CNI(Container Network Interface)를 구성하여 컨테이너 간에 고성능 대기 시간이 짧은 통신을 활성화할 수 있습니다. RDMA를 SR-IOV와 결합할 때 DPDK(Data Plane Development Kit) 애플리케이션 내부에서 사용할 Mellanox 이더넷 장치의 하드웨어 카운터를 노출하는 메커니즘을 제공합니다.
5.1. SR-IOV RDMA CNI 구성 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV에서 RDMA CNI를 구성합니다.
이 절차는 Mellanox 장치에만 적용됩니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - SR-IOV Network Operator가 설치되어 있습니다.
프로세스
SriovNetworkPoolConfig
CR을 생성하고 다음 예와 같이sriov-nw-pool.yaml
로 저장합니다.SriovNetworkPoolConfig
CR의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 네트워크 네임스페이스 모드를
배타적
으로 설정합니다.
다음 명령을 실행하여
SriovNetworkPoolConfig
리소스를 생성합니다.oc create -f sriov-nw-pool.yaml
$ oc create -f sriov-nw-pool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SriovNetworkNodePolicy
CR을 생성하고 다음 예와 같이sriov-node-policy.yaml
로 저장합니다.SriovNetworkNodePolicy
CR의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 모드를 활성화합니다.
다음 명령을 실행하여
SriovNetworkNodePolicy
리소스를 생성합니다.oc create -f sriov-node-policy.yaml
$ oc create -f sriov-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SriovNetwork
CR을 생성하고 다음 예와 같이sriov-network.yaml
로 저장합니다.SriovNetwork
CR의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 플러그인을 생성합니다.
다음 명령을 실행하여
SriovNetwork
리소스를 생성합니다.oc create -f sriov-network.yaml
$ oc create -f sriov-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Pod
CR을 생성하고 다음 예와 같이sriov-test-pod.yaml
로 저장합니다.런타임 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 테스트 Pod를 생성합니다.
oc create -f sriov-test-pod.yaml
$ oc create -f sriov-test-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 테스트 Pod에 로그인합니다.
oc rsh testpod1 -n sriov-tests
$ oc rsh testpod1 -n sriov-tests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
hw-counters
디렉터리의 경로가 있는지 확인합니다.ls /sys/bus/pci/devices/${PCIDEVICE_OPENSHIFT_IO_SRIOV_NIC_PF1}/infiniband/*/ports/1/hw_counters/
$ ls /sys/bus/pci/devices/${PCIDEVICE_OPENSHIFT_IO_SRIOV_NIC_PF1}/infiniband/*/ports/1/hw_counters/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
duplicate_request out_of_buffer req_cqe_flush_error resp_cqe_flush_error roce_adp_retrans roce_slow_restart_trans implied_nak_seq_err out_of_sequence req_remote_access_errors resp_local_length_error roce_adp_retrans_to rx_atomic_requests lifespan packet_seq_err req_remote_invalid_request resp_remote_access_errors roce_slow_restart rx_read_requests local_ack_timeout_err req_cqe_error resp_cqe_error rnr_nak_retry_err roce_slow_restart_cnps rx_write_requests
duplicate_request out_of_buffer req_cqe_flush_error resp_cqe_flush_error roce_adp_retrans roce_slow_restart_trans implied_nak_seq_err out_of_sequence req_remote_access_errors resp_local_length_error roce_adp_retrans_to rx_atomic_requests lifespan packet_seq_err req_remote_invalid_request resp_remote_access_errors roce_slow_restart rx_read_requests local_ack_timeout_err req_cqe_error resp_cqe_error rnr_nak_retry_err roce_slow_restart_cnps rx_write_requests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow