본 시리즈의 1편은 RDMA를 사용하면 성능이 좋아지는 이유를 폰 노이만 아키텍처를 통해 설명합니다.
컴퓨터 아키텍처의 기본 원리 중 하나는 폰 노이만(Von Neumann) 아키텍처입니다. 이 아키텍처는 CPU, 메모리, 그리고 I/O 장치로 구성되며, 이들 간의 데이터 전송을 기반으로 합니다.
폰 노이만 아키텍처의 핵심은 CPU가 메모리에 저장된 데이터를 읽고 쓰는 것입니다. 그러나 이 구조에는 한 가지 주요한 문제점이 있습니다. 바로 폰 노이만 병목 현상(Von Neumann Bottleneck)입니다.
폰 노이만 병목 현상은 CPU와 메모리 간의 데이터 전송 속도가 상대적으로 느려서 발생하는 성능 저하 문제를 의미합니다. 이는 특히 네트워크를 통해 데이터를 주고받을 때 더욱 두드러집니다. 이 문제를 해결하는 데 도움이 되는 기술 중 하나가 바로 RDMA(Remote Direct Memory Access)입니다.
폰 노이만 아키텍처 설명 그림
그림 설명:
- CPU (Central Processing Unit):
- Control Unit (CU): 명령어를 해석하고 실행 순서를 제어합니다.
- Arithmetic Logic Unit (ALU): 산술 및 논리 연산을 수행합니다.
- Registers: 임시 데이터를 저장하는 고속 메모리입니다.
- 메모리 (Memory):
- 프로그램 명령어와 데이터를 저장하는 공간입니다. RAM(Random Access Memory)이 여기에 해당합니다.
- I/O 장치 (Input/Output Devices):
- 외부 장치와의 데이터 통신을 담당합니다. 예를 들면, 키보드, 마우스, 하드 드라이브 등이 있습니다.
- 버스 (Bus):
- 데이터 버스(Data Bus): 데이터 전송을 담당합니다.
- 주소 버스(Address Bus): 메모리 주소를 전송합니다.
- 제어 버스(Control Bus): 제어 신호를 전송합니다.
RDMA 기술을 사용하는 프로토콜: Infiniband와 RoCE
RDMA는 CPU의 개입 없이 네트워크를 통해 직접 메모리 간의 데이터를 전송할 수 있는 기술입니다. 이를 통해 다음과 같은 이점을 제공합니다:
- 낮은 지연 시간(Latency): RDMA는 CPU를 거치지 않고 메모리 간 직접 전송이 이루어지기 때문에 데이터 전송 속도가 매우 빨라집니다. 이는 폰 노이만 아키텍처에서 발생하는 병목 현상을 완화하는 데 큰 도움이 됩니다.
- 낮은 CPU 사용률(CPU Utilization): 전통적인 데이터 전송 방식에서는 CPU가 데이터를 처리하고 전송하는 데 많은 자원을 사용합니다. 그러나 RDMA를 사용하면 CPU가 데이터 전송 작업에서 해방되기 때문에 다른 중요한 작업을 처리할 수 있는 여유가 생깁니다.
- 높은 대역폭(Bandwidth): RDMA는 네트워크 대역폭을 최대한 활용할 수 있어 더 많은 데이터를 빠르게 전송할 수 있습니다. 이는 대규모 데이터 처리가 필요한 분산 컴퓨팅 환경에서 특히 유용합니다.
RDMA 기술을 구현하는 주요 프로토콜로는 InfiniBand와 RoCE(RDMA over Converged Ethernet)가 있습니다.
Infiniband의 RDMA 사용
- 데이터 전송 시 CPU의 역할 감소
- 일반적인 데이터 전송에서는 CPU가 데이터를 메모리에서 읽어 네트워크로 보내고, 다시 네트워크에서 데이터를 받아 메모리에 쓰는 과정을 반복합니다.
- RDMA를 사용하면 CPU가 이러한 작업을 직접 수행하지 않고, 네트워크 인터페이스 카드(NIC)가 데이터를 직접 메모리 간에 전송합니다.
- 데이터 전송 과정
- Rack 1와 Rack 2가 InfiniBand 네트워크를 통해 연결됩니다.
- Rack 1은 RDMA를 통해 Rack 2의 메모리에 직접 데이터를 쓰거나 읽을 수 있습니다.
- 이 과정에서 CPU의 개입이 최소화되므로, 데이터 전송이 매우 빠르게 이루어집니다.
RoCE 는 Infiniband의 RDMA 기술을 사용
RoCE(RDMA over Converged Ethernet)는 이더넷 네트워크에서 RDMA 기능을 제공하는 프로토콜입니다. 이는 기존의 이더넷 인프라를 활용하여 RDMA의 이점을 누릴 수 있게 합니다. RoCE는 InfiniBand의 RDMA 기술을 이더넷 환경에 적용한 것입니다. 이는 InfiniBand의 고성능 RDMA 기술을 그대로 사용하면서도, 기존의 이더넷 인프라를 활용할 수 있다는 장점을 가집니다.
- RoCE v1:
- 레이어 2에서 작동: RoCEv1은 OSI 모델의 데이터 링크 계층(레이어 2)에서 작동합니다.
- 동일한 서브넷 내에서만 통신 가능: RoCEv1은 동일한 서브넷 내에서만 통신이 가능하므로, 네트워크 범위가 제한됩니다.
- RoCE v2:
- 레이어 3에서 작동: RoCEv2는 OSI 모델의 네트워크 계층(레이어 3)에서 작동합니다.
- 라우팅 가능: RoCEv2는 라우팅이 가능하여 더 넓은 네트워크 범위에서 통신할 수 있습니다.
- InfiniBand의 Transport Protocol 사용: RoCEv2는 InfiniBand의 Transport Protocol을 사용하여 RDMA 기능을 제공합니다. 이는 InfiniBand의 고성능 RDMA 기술을 이더넷 환경에서도 그대로 사용할 수 있게 합니다.
RoCE는 InfiniBand의 RDMA 기술을 이더넷 네트워크에 적용한 프로토콜입니다. 이를 통해 기존의 이더넷 인프라를 활용하면서도 InfiniBand의 고성능 RDMA 기술을 사용할 수 있습니다. RoCEv1은 동일한 서브넷 내에서 작동하며, RoCEv2는 라우팅이 가능하여 더 넓은 네트워크 범위에서 통신할 수 있습니다. 이는 대규모 데이터 센터와 고성능 컴퓨팅 환경에서 매우 유용한 기술입니다.
결론
대규모 GPU 클러스터에서 여러 서버 간에 데이터를 주고받아야 하는 상황을 생각해보시기 바랍니다. 전통적인 방식으로는 각 서버의 CPU가 데이터를 처리하고 전송하는 데 많은 시간을 소비하게 됩니다. 그러나 RDMA를 사용하면 각 서버의 메모리 간에 직접 데이터를 전송할 수 있어, 전체 시스템의 성능이 크게 향상됩니다. 특히, InfiniBand와 RoCE 같은 프로토콜을 사용하면 이 성능 향상 효과를 극대화할 수 있습니다.
결론적으로, RDMA는 폰 노이만 아키텍처의 병목 현상을 완화하고, 시스템 성능을 크게 향상시킬 수 있는 강력한 기술입니다. CPU의 개입 없이 메모리 간 직접 데이터 전송이 가능해져, 낮은 지연 시간, 낮은 CPU 사용률, 높은 대역폭을 통해 효율적인 데이터 처리가 가능해집니다. 따라서 RDMA를 도입하면 시스템의 전반적인 성능이 크게 향상될 수 있습니다.