5장. SR-IOV를 위한 RDMA 하위 시스템 구성
RDMA(원격 직접 메모리 액세스)를 사용하면 두 시스템의 운영 체제를 거치지 않고도 두 시스템 간의 직접 메모리 액세스가 가능합니다. SR-IOV(Single Root I/O Virtualization)에서 RDMA 컨테이너 네트워크 인터페이스(CNI)를 구성하여 컨테이너 간에 고성능, 저지연 통신을 구현할 수 있습니다. 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가 설치되어 있습니다.
프로세스
다음 예와 같이
SriovNetworkPoolConfigCR을 만들고sriov-nw-pool.yaml로 저장합니다.예제
SriovNetworkPoolConfigCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 네트워크 네임스페이스 모드를
배타로 설정합니다.
다음 명령을 실행하여
SriovNetworkPoolConfig리소스를 만듭니다.oc create -f sriov-nw-pool.yaml
$ oc create -f sriov-nw-pool.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이
SriovNetworkNodePolicyCR을 만들고sriov-node-policy.yaml로 저장합니다.예제
SriovNetworkNodePolicyCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 모드를 활성화합니다.
다음 명령을 실행하여
SriovNetworkNodePolicy리소스를 만듭니다.oc create -f sriov-node-policy.yaml
$ oc create -f sriov-node-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이
SriovNetworkCR을 만들고sriov-network.yaml로 저장합니다.예시
SriovNetworkCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- RDMA 플러그인을 생성합니다.
다음 명령을 실행하여
SriovNetwork리소스를 만듭니다.oc create -f sriov-network.yaml
$ oc create -f sriov-network.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 예와 같이
PodCR을 만들고sriov-test-pod.yaml로 저장합니다.런타임 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 테스트 포드를 만듭니다.
oc create -f sriov-test-pod.yaml
$ oc create -f sriov-test-pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 테스트 포드에 로그인합니다.
oc rsh testpod1 -n sriov-tests
$ oc rsh testpod1 -n sriov-testsCopy 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_requestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow