카더라가 좀 많아서 몇 가지 정리 좀 하겠습니다.
1. iWARP/ROCE/RDMA가 동일한 기술은 아닙니다.
전혀. iWARP를 지원하는 NIC중에 RDMA를 지원하지 않는 NIC들이 많습니다.
2. RDMA가 ZERO COPY이기 때문에 성능이 좋은건 아닙니다.
TCP/IP도 ZERO COPY로 구현된지 10년 넘었습니다.
다만 RDMA가 ZERO COPY인건 태생적으로 맞습니다.
3. 모든 10G/40G가 RDMA를 지원하지는 않지만 RDMA를 지원하는 카드는 많습니다. 또한 많은 >10G NIC들은 iWARP를 지원합니다.
4. RDMA/iWARP는 빠른 TCP가 아닙니다. 굳이 비교하려면 RDP (Reliable Diagram) 와 비슷하겠습니다.
5. RDMA의 DMA가 보안에 취약함. 웃기는 소리입니다.
RDMA가 REMOTE DMA입니다. 기본적으로 PC1의 메모리를 PC2에서 사용할 수 있는겁니다.
이걸가지고 보안이 어쩌구 하는것 자체가 웃기는 겁니다.
물론 프로그램 잘못짜면 위험할 수 있습니다.
아주 오래전에 어떤 회사가 요청했던 비슷한 상황이 있었습니다. 반도체/디스플레이 QA 쪽 솔루션 이었습니다.
그때 상황은
1. PC1의 카메라가 워이퍼/패널 사진을 찍음
2. PC1의 카메라가 찍은 이미지를 파일로 떨꿈 (Local DISK/NFS/SAMBA 등 다양한 방법 사용)
3. PC1이 PC2 (분석장비)에 파일이 생성되었음을 알림
4. PC2가 PC1의 파일을 가져감 (보내줌, NFS/SAMBA 등 공유 저장장치에 저장함 등등)
5. PC2는 해당 파일을 읽고 (메모리로 로딩) "분석" 함
순이었습니다.
문제는 파일의 크기가 점점 커지면서 촬영/저장/전송/분석 단계 중에서 저장/전송 단계에 너무 많은 시간/자원이 소요 되는 거였습니다.
해결방법은
1. PC1의 카메라가 사진을 찍음
2. PC1의 카메라가 찍은 IMAGE DATA가 아직 BUFFER에 있음 (Driver buffer 일수도 있음)
3. PC1은 해당 DATA가 저장된 메모리의 위치를 확인함 (메모리에 Lock걸구, 간혹 LOCK 빼먹으면 5와 같은 보안 이슈 발생 할 수 있음)
4. PC1은 PC2에 해당 메모리 위치/크기 등을 알려 줌
5. PC2는 PC1의 메모리에서 IMAGE DATA를 RDMA Protocol을 사용하여 PC2의 메모리로 가져옴
6. PC2는 PC1의 해당 메모리 LOCK 해제
7. PC2는 이미 자신의 메모리에 있는 데이터를 대상으로 "분석" 수행 함
이었습니다.
데모 수준에서 해보면 10~40배 정도의 성능 향상이 이루어 지는 걸 확인 할 수 있는데
이 간단한 구조를 실제 구현 하는게 만만치 않습니다.
당시 개발팀장 비명 소리가 지금도 생생합니다.
ȿ ϴٰ ϴ.
intel cpu Ʈ ϸ鼭 xeon DDIO. RDMA ߰ߵ ־ ذǾ ڴ θ ߽ϴ.
Ʒ ũ ɾ ̱.
https://www.bodnara.co.kr/bbs/article.html?num=157569
10G ؼ ẻ 鿩 ϴ.
RDMA 10G ְ ִ°ǰ? ڵ 10G RDMA ϳİ ݹϼ̴µ ñմϴ.
10G samba nfs .
Ϲ TCPε Ǵ κԴϴ.
ٸ RDMA Aġ Bġ ֵ /ε ̸ ϴ ʾ Դϴ.
Ѵٰ ʾҽϴ.
װ NFS/SAMBA ϳ ϰ Ͻø ̴ ٸ Դϴ.
۵Ǵ Ͱ ̶
10G 10G 100G ְ
DISK 100Gƴ϶ 400Gε
ڸ 200KM/h ־ ó ư.
ƹư Ѵٴ ° ǿ ٽ Ű忴 . ªҽϴ.
δ Կ ó ٸ ġ Ǿ ϳ. ð ̴° ̶ּ
óϰ ٸ ǻ mpi ̿Ͽ ó ͳ 길 Ѱ
Ҽ ? µ ݵü ̿ܿ ٸ ϴ
ϴ ƴұ ߽ϴ.
2. TCP zero-copyϱ? ᱹ ø̼ǿ Ϸ Ŀ -> ߰ copy ʿմϴ.
κ ϱ uio ϱ 忡 zero copy ϴ ͵ ½ϴ. zero copy ΰ ƴ϶ մϴ.
100G Dz Ʈ Ŀ Ʈũ δ ͼ DPDK ߽ϴ. 40G Ե ĿѴ ĵ 100G ʹ RDMA Dz ִ ƴұ մϴ. ǰԴϴ.
=>ʱ INTEL iWARP NIC ߿ RDMA ʴ NIC ҽϴ. CHELSIO ϴ.
2. TCP zero-copyϱ?
=> ZERO COPY ½ϴ. ʰ DRIVER/STACK ֱ մϴ.
=> Applicartion Ǿ ٸ ٸ Դϴ.
̽ ( DPDK ϴ)
DPDK Ʈũ Ŷó ϴ Protocol̰ RDMA Remote DMAԴϴ.
DPDK User Space NIC Ʈũ Ʈ ִ Library ̶ ټ ִٰ մϴ.
DPDK L2 Protocol L6 ؿ ֵ ϱ User Space Application û ְ ̵ û ̴ϴ.
DPDK ȭ ƴϱ ڰ /ޱ Ϸ Ʈ ؾ մϴ.
, TCP Application ڰ ؼ ַǿ ־ ϴ ̴ϴ.
ġ
ڰ ã
=>PC2 ۵ϴ м α PC1 CAMERA PC1 ״ϱ ̸ ˾Ƽ α/ý մϴ.
DPDK ֽϴ.
RDMAε ֽϴ.
̵ ..
2. Application 'ּ' copy ʿϴٴ ̾߱Դϴ. RDMA ̵ ϴ RDMA ּ memcpy ֽϴ. ƽôٽ ̴ ø̼ǿ Ŭ ֽϴ
3. DPDK L2 Library, ̺귯 ϴ mTCP Ƽ ̺귯 մϴ. ϴ...
Ҿ+ģ ġڴ ̵ over 40G ϱ DPDK ϱ⺸ٴ IB Verbs API ϴ ִٴ Դϴ. DPDK 忡..
̹ ۼںа ȭϿ bottleneck point latency ٴ bandwidth̴, 100/200G NIC Ͽ ϴ ݷ Dz/ǥ ð θ Ȯ ġ RDMA ɼ ϶ Ƚϴ. Ƹ Ͻ ̴ϴ.
δ 带 ɰ ̹ ִٸ CPU ھ лؼ near 100G ֽϴ. ý ɿ . װε ϴٸ RDMA ؾ ֽϴ.
DPDK ƴϰ ̵߳ մϴ.
DPDK ϴ NIC ̴ϴ.
DPDK ڸ NIC ̸ ̰ ô Ѱ赵 ֽϴ.
ġ ī尡 driver ó
, ƴҼ
ϵ part · splitϿ μ ϴ° ȣմϴ,.
̾ޱⰡ ż صθ ϱ...