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가 설치되어 있습니다.
프로세스
다음 예와 같이
SriovNetworkPoolConfig
CR을 만들고sriov-nw-pool.yaml
로 저장합니다.예제
SriovNetworkPoolConfig
CRCopy 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
CRCopy 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
CRCopy 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 다음 명령을 실행하여 테스트 포드를 만듭니다.
oc create -f sriov-test-pod.yaml
$ oc create -f sriov-test-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 테스트 포드에 로그인합니다.
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