Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
RDMA(Remote Direct Memory Access)
일반적인 NIC에서의 데이터 전송 과정은 다음과 같다.
1. user space의 버퍼에서 kernel space의 소켓 버퍼로 데이터를 복사 후, 헤더 추가
2. kernel space에서 NIC 버퍼로 복사 후, 수신 측으로 전송
3. 수신 측이 패킷을 NIC 버퍼에서 kernel space로 복사
4. 데이터가 kernel space에서 user space로 복사
5. 컨텍스트 스위칭이 일어나 사용자 응용 프로그램 호출
이러한 과정은 CPU의 복사 작업과 커널 level로 인터럽트를 하는 등의 작업이 필요하므로 부하를 늘린다.
이러한 불필요한 과정을 제거하는 것이 RDMA이다.
OS 영향 없이, 네트워크를 통해 다른 시스템으로 데이터를 빠르게 이동시킬 수 있다.
이를 통해 메모리의 복사와 텍스트 교환 작업이 제거되어 성능 향상을 노릴 수 있다.
RDMA 작업 과정
애플리케이션으로부터의 RDMA 읽기/쓰기 요청은 커널 메모리로의 복사 없이, user space에서 로컬 NIC 버퍼로 그대로 전송된다. NIC의 버퍼 내용은 네트워크를 통해 수신 측의 NIC로 전송된다.
이때 전송되는 RDMA 정보에는 대상의 가상 주소와 메모리 키, 그리고 읽고 쓸 데이터의 길이(DMA Length)가 포함된다.
이를 통해 원격 애플리케이션의 메모리에서 데이터를 읽거나 쓸 수 있게 된다.
RDMA에서는 커널을 경유하는 오버헤드를 줄이기 위해 로컬 NIC로 데이터를 직접 전송한다.
이를 Kernel Bypass(커널 우회)라고 한다.
인피니 밴드(Infini Band, IB)
RDMA를 구현하는 대표적인 기술이 InfiniBand와 RoCEv2이다.
여기서는 Infini Band에 대해서 알아보자.
Infini Band는 PCI(Peripheral Component Interconnect) bus의 병목 문제를 해결하기 위해 Mellanox에 의해 개발되었다.
PCI 버스는 모든 구성요소의 데이터가 동일 버스를 타면서 병목 현상이 발생한다.
인피니밴드에서는 채널 어댑터(CA, 인피티밴드 카드)인 HCA(Host Channel Adapter)와 TCA(Target Channel Adapter)를 사용한다.
실제로 둘은 같은 어댑터이지만 HCA는 서버와 같은 호스트 시스템에 설치되는 어댑터이다.
호스트 측은 RDMA를 통해 CPU 개입 없이 메모리 간의 데이터 직접 전송을 가능하게 한다.
TCA는 스토리지와 네트워크워크 장비에 설치된 어댑터를 의미하며 주로 수신 측을 의미한다.
기존의 PCI Bus는 하나의 채널에 여러 데이터가 이동하면서 트래픽 간섭이 발생한다.
하지만 InfiniBand에서는 CA(Channel Adapter) 간에 point-point와 양방향 통신이 가능하여 더 높은 속도를 제공할 수 있다.
또한 전용 스위치인 infiniband Switch를 거치면서 2&3 Layer를 축약하는 전용 프로토콜을 쓰기 때문에 더 좋은 성능을 낼 수 있다.
InfiniBand는 AI로 인해 GPU 활용도가 높아지고, NVIDIA가 Infiniband의 개발사인 Mellamox를 인수하면서 GPU 인프라 시장에서 거의 필수 요소로 사용되고 있다.
GPU 클러스터에서 InfiniBand는 고용량의 데이터들을 CPU 경유 없이 다른 GPU들에게 전달하는 핵심 네트워크 기술로 사용된다.
아래처럼 각 GPU마다 메모리가 존재하므로 HCA를 연결하여 GPU끼리 연결 시킬 수 있다.
InfiniBand의 단점
이런 다양한 장점에도 불구하고 InfiniBand 스위칭 시스템은 이더넷 스위칭 시스템을 대체할 정도로 대중적이지는 않다.
InfiniBand 스위칭 시스템의 관리적 어려움도 크지만 무엇보다 가격으로 인한 확장 비용이 높다.
GPU 별로 InfiniBand 카드(HCA)를 장착하고 특수 케이블과 하드웨어까지 구매해야 한다.
특히 NVIDIA가 InfiniBand와 호환되는 다양한 기술을 활용하여 제품을 출시하므로 GPU 네트워크 분야에서 사실상 독점적인 위치에 올라가 있다.
경쟁사에서는 더 저렴하게 InfiniBand를 대체할 수 있는 RoCEv2 기술을 개발하였지만, 이미 InfiniBand가 시장의 파이를 먹어둔 만큼 전환은 어려워 보인다.
관련 추천 글
https://toss.tech/article/30767
고성능 GPU 클러스터 도입기 #2: 이주하는 데이터
이번 포스트에서는 토스증권에서 어떻게 고성능 GPU 클러스터를 구축했는지 자세히 공유하겠습니다.
toss.tech
참조
https://blog.naver.com/skauter/10169437853
https://cloudswit.ch/blogs/roce-or-infiniband-technical-comparison/
https://toss.tech/article/30767
'CS > OS' 카테고리의 다른 글
[RHEL9] Lacal & Remote repository 설정하기 (0) | 2025.04.05 |
---|---|
SR-IOV vs DPDK (+ OVS, PCI Passthrough) (0) | 2025.03.04 |
DPDK의 원리와 커널 우회(Kernel bypass) (0) | 2025.03.04 |