
데이터센터의 비싼 장난감을 책상 위로
혹시 "RDMA"라는 말 들어보셨나요? 처음 보면 무슨 암호 같은데요, 풀어쓰면 Remote Direct Memory Access, 즉 "원격 직접 메모리 접근"이에요. 이게 뭐냐면, 보통 컴퓨터 두 대가 네트워크로 데이터를 주고받을 때는 CPU가 일일이 끼어들어서 "이 데이터를 받아서 메모리에 넣고, 다시 꺼내서 보내고..." 하는 작업을 해요. 그런데 RDMA는 한 컴퓨터가 상대방 컴퓨터의 메모리를 CPU를 거치지 않고 직접 읽고 쓰는 기술이에요. 마치 옆자리 동료 책상 서랍을 그 사람한테 부탁하지 않고 내가 직접 열어서 물건을 꺼내오는 느낌이죠. 덕분에 지연시간(latency)이 마이크로초 단위로 줄어들고 CPU도 한가해집니다.
문제는 이 기술을 제대로 쓰려면 보통 InfiniBand라는 전용 네트워크 장비가 필요하다는 거예요. 데이터센터에서 쓰는 고가의 카드와 스위치인데, 개인이 집에서 공부하거나 실험하려고 사기엔 너무 비쌉니다. 그래서 RDMA 코드를 짜보고 싶어도 "장비가 없어서" 시작도 못 하는 경우가 많았어요.
Thunderbolt를 RDMA 전송선으로
이번에 소개할 thunderbolt-ibverbs 프로젝트는 바로 이 벽을 허무는 시도예요. 요즘 맥북이나 노트북에 흔히 달린 Thunderbolt 포트, 그 케이블 하나로 컴퓨터 두 대를 직접 연결할 수 있거든요. 이 Thunderbolt 연결을 전송 통로로 삼아서, InfiniBand의 표준 프로그래밍 인터페이스인 ibverbs(verbs API) 를 그대로 흉내 내도록 구현한 거예요.
verbs API가 핵심인데요, 이게 RDMA 프로그래밍의 사실상 표준 인터페이스예요. ibv_post_send, ibv_post_recv, Queue Pair(송수신 큐 한 쌍), Completion Queue(작업 완료 알림 큐) 같은 개념들로 이뤄져 있어요. 진짜 InfiniBand 카드를 쓰든 안 쓰든, 애플리케이션 입장에서는 똑같은 함수를 호출하면 되는 거죠. thunderbolt-ibverbs는 이 함수들을 받아서 실제로는 Thunderbolt 네트워킹 위로 데이터를 흘려보내요. 그러니까 앱 코드는 한 줄도 안 바꾸고, 마치 InfiniBand 장비가 꽂혀 있는 것처럼 개발하고 테스트할 수 있게 되는 거예요. 제목의 "We have InfiniBand at home(우리집에도 InfiniBand 있어)"이라는 농담이 딱 이 상황을 가리킵니다. 진짜 비싼 건 못 사지만, 집에 있는 걸로 비슷하게 만들었다는 거죠.
비슷한 동네 이웃들
사실 "진짜 하드웨어 없이 RDMA를 흉내 내자"는 시도가 이게 처음은 아니에요. 리눅스 커널에는 SoftRoCE(rxe) 라는 게 있어서, 일반 이더넷 카드 위에서 RoCE(RDMA over Converged Ethernet)를 소프트웨어로 에뮬레이션해줘요. RoCE는 InfiniBand가 아니라 일반 이더넷 위에서 RDMA를 돌리는 표준이고요. 또 libfabric 같은 상위 추상화 라이브러리도 여러 전송 방식을 감싸주죠.
그럼 thunderbolt-ibverbs는 뭐가 다르냐면, Thunderbolt 특유의 PCIe 기반 직결이라는 성격을 활용한다는 점이에요. Thunderbolt는 본질적으로 PCIe를 케이블로 빼낸 것에 가까워서 대역폭이 넓고 지연이 낮거든요. 그래서 단순 소프트웨어 에뮬레이션보다 실제 RDMA의 "메모리 직접 접근" 감각에 더 가깝게 실험해볼 여지가 있어요. 물론 진짜 InfiniBand의 성능이나 안정성을 그대로 재현하는 건 아니고, 어디까지나 학습·개발·프로토타이핑용이라는 점은 분명히 해둬야 합니다.
한국 개발자에게
요즘 AI 학습 인프라나 고성능 분산 시스템 이야기를 하다 보면 RDMA, NCCL, GPUDirect 같은 단어가 빠지질 않아요. 대규모 모델을 여러 GPU에 나눠서 학습할 때 노드 간 통신이 병목이 되는데, 거기서 RDMA가 핵심 역할을 하거든요. 그런데 이걸 "개념으로만" 아는 것과 실제로 verbs API를 손으로 짜본 것은 이해의 깊이가 완전히 다릅니다.
thunderbolt-ibverbs 같은 도구의 진짜 가치는 진입 장벽을 없애준다는 데 있어요. 맥북 두 대, Thunderbolt 케이블 하나만 있으면 Queue Pair를 만들고 메모리 영역을 등록(memory registration)하고 원격 쓰기를 날려보는 경험을 직접 해볼 수 있으니까요. HPC나 분산 학습 인프라 쪽으로 커리어를 잡고 싶은 분이라면, 이런 걸로 한 번 굴려보는 게 책 열 권 읽는 것보다 나을 수 있어요.
마무리
한 줄로 정리하면, 비싼 InfiniBand 없이도 집에 있는 Thunderbolt 케이블로 RDMA 프로그래밍을 연습할 수 있게 해주는 프로젝트예요. 여러분은 RDMA 같은 저수준 네트워킹 기술, 실무에서 직접 만져볼 일이 있으셨나요? 아니면 "AI 인프라 한다면서 정작 통신 계층은 블랙박스로 두고 있었다" 싶으신가요? 댓글로 경험 나눠주세요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공