인공지능과 빅데이터 분석 등 고성능 워크로드를 요구하는 애플리케이션의 비중이 날이 갈수록 증가하고, 클라우드 서비스의 확대로 인해 고객들에게 제공되는 서비스의 규모와 종류 역시 다양해지고 있습니다. 각 애플리케이션은 하드웨어 리소스에 대한 요구 사항을 가지고 있고, 새로운 버전과 최적화 기능 등이 빠르게 배포되고 있는 것에 비해, 하드웨어의 발전 속도는 소프트웨어의 그것을 따라가지 못하고 있습니다. 이는 애플리케이션의 성능이 하드웨어의 최대 성능에 머무르게 된다는 뜻입니다.

게다가, 높아지는 애플리케이션의 성능 요구 사항을 맞추기 위해 GPU와 FPGA 등을 활용한 가속기(accelerator), SmartNIC를 활용한 CPU 오프로드 등이 등장하면서 하드웨어의 복잡도는 점점 높아지고 있습니다. 이렇게 복잡해지는 시스템 아키텍처와 CPU, 메모리, 네트워크 대역폭, 지연 시간, 가용성 등의 애플리케이션 리소스를 최적으로 활용하기 위해 IT 관리자들에게는 시스템 디자이너급의 이해도와 기술 지식이 요구되지만, 이 또한 어려운 것이 현실입니다. 복잡한 하드웨어 구성 대신 가상화를 통해 여러 애플리케이션을 하나의 시스템에서 가동하는 방법으로 보완을 할 수 있지만, 여러 애플리케이션의 요구 사항을 완벽히 이해하지 않는 이상 오버 프로비저닝을 하게 되어 효율적인 리소스 활용을 어렵게 합니다. 갈수록 증가하는 애플리케이션의 시스템 요구 사항에 현재 하드웨어 구성으로는 성능과 비용 효율이 떨어진다는 것입니다. 여기서 데이터 센터의 컴퓨트, 네트워크, 스토리지 등의 리소스 활용 효율을 극대화하고, 시스템 복잡도를 줄이는 방안으로서 컴포저블 인프라라는 개념이 제시되고 있습니다.

 

컴포저블 인프라

컴포저블 인프라(composable infrastructure)는 말 그대로 필요에 따라 구성 가능한 인프라를 뜻합니다. 컴포저블 인프라는 단일 서버 보드에 CPU, 메모리, 스토리지, 네트워크 등의 리소스들이 함께 구성된 형태가 아닌, 각 리소스를 하드웨어에서 분리(disaggregate) 하여 가상의 풀로 구현합니다. 개념은 벤더들마다 조금씩 상이한데, 소프트웨어 정의 인프라(software-defined infrastructure)와도 용어를 혼용하기도 합니다.

컴포저블 인프라 환경에서는 특정 애플리케이션을 구동할 때 별도의 하드웨어를 구성하거나 직접 리소스를 할당하는 대신 애플리케이션 개발자가 미리 정한 하드웨어 요구 사항을 API를 통해 자동으로 전달하여 필요한 리소스를 적절하게 분배합니다. 할당된 시스템 리소스는 관리 API를 통해 자동으로 운용되며, 애플리케이션의 필요에 따라 추가 할당 또는 회수됩니다. 또한, 컴포저블 인프라에서는 CPU 또는 가속기와 메모리로 구성된 서버, 스토리지 어레이, 네트워크 장비가 여러 대로 구성된 랙 단위의 형태로 구성되며, 증설과 교체가 자유롭습니다. 인프라 구성 방식이 기존의 하드웨어 중심에서 애플리케이션 요구 사항 중심으로 이동했다고 할 수 있습니다.

이해를 돕기 위해 컴포저블 인프라와 비슷하지만 약간 다른 개념인 하이퍼컨버지드 인프라(hyperconverged infrastructure, 이하 HCI)와 비교해 보겠습니다:

 

Alt text

< 표. HCI와 컴포저블 인프라 비교 >

 

컴포저블 인프라 내 상호 연결

최근 데이터 센터는 연산 성능 보조를 위한 FPGA나 GPU와 같은 가속기 도입을 확대하는 추세입니다. 하지만, 기존의 이더넷이나 인피니밴드 기반의 네트워크 환경으로는 가속기와 타 프로세서 간의 메모리 공유를 지원하지 않는 캐시 일관성1 문제 때문에 데이터 전송 효율을 원하는 만큼 높일 수 없습니다.

이를 해결하기 위해 많은 벤더들이 PCIe 인터페이스에 주목하게 되었습니다. PCIe는 거의 모든 서버 보드에 탑재되어 있으면서, 네트워크 카드나 GPU, NVMe 등의 장비를 서로 연결하는 고속 인터페이스이기 때문입니다. 그리고 이 PCIe 인터페이스를 활용해 최근 CXL과 Gen-Z와 같은 PCIe 기반의 인터커넥트 기술이 대두되고 있습니다.

CXL(Compute Express Link)은 인텔을 중심으로 한 CXL 컨소시움에서 제시한 오픈형 상호 연결(interconnect) 표준 프로토콜입니다. CPU의 메모리와 GPU, FPGA와 같은 가속기 메모리 간에 직접적인 상호 연결을 지원해 메모리 공유를 통한 캐시 일관성을 제공합니다. 게다가 네트워크 카드에서 CPU 메모리처럼 가속기의 메모리에의 접근을 가능하게 합니다. 같은 유형의 프로세서 내에서만 지원되던 공용 메모리 풀을 다른 유형의 프로세서나 디바이스와도 공유하게 되기 때문에 메모리 간 초저지연을 구현할 수 있고, 무엇보다 PCIe 5.0 인터페이스를 기반으로 무수한 이기종 디바이스들을 지원할 수 있다는 점이 CXL의 특징입니다.

Gen-Z는 HPE를 중심으로 한 Gen-Z 컨소시움에서 제시하는 오픈형 상호 연결 표준 프로토콜입니다. CXL과 같이 이기종 프로세서 간 캐시 일관성을 주요 과제로 삼고 있지만, 로컬 시스템 위주의 CXL 과는 달리 물리적 계층을 IEEE 802.3 이더넷을 기반으로 한 스위치 구성을 지원합니다. 이로 인해 랙이나 데이터 센터 단위의 연결망 사이에서 공유 메모리를 구현할 수 있고, 각 프로세서에서 독자적으로 메모리 풀에 접근할 수 있다는 점이 특징입니다.

 

Alt text

< 컴포저블 인프라 구성도 예시 >

 

CXL과 Gen-Z는 이처럼 프로세서 간 캐시 일관성에 있어서는 비슷한 기술처럼 보입니다만, 서로 경쟁하는 위치가 아닌 상호운용성(interoperability) 측면에서 더 주목받고 있습니다. 위 그림에서 보시다시피, CXL은 서버 내의 메인 프로세서와 FPGA 및 GPU 간의 메모리 공유에 중점을 두고 있는 반면, Gen-Z는 컴퓨팅 서버, 가속기 서버, 메모리 서버, 스토리지 등을 아우르는 메모리 풀을 구성합니다. 이러한 두 표준의 등장으로 컴포저블 인프라 구성 시 서버 내부와 서버 간 통신에서의 리소스 분배의 유연성은 극대화될 것으로 보고 있습니다. 실제 지난 2020년 4월, 이 두 컨소시엄은 MOU를 맺고 기술 협력과 상호 운용의 가능성에 대해 제시한 바 있습니다. 이로써 향후 단일화된 연결 표준도 기대해 볼 수 있겠습니다.

 

마치며

지금까지 컴포저블 인프라의 개념과 특징, 그리고 컴포저블 인프라 내 연결고리로 주목받고 있는 CXL과 Gen-Z 표준에 대해 설명했습니다. 향후 컴포저블 인프라 관련 표준이나 새로운 기술이 나오면 블로그에서 조금 더 다루어 보도록 하겠습니다.

참고

  • https://www.snia.org/sites/default/files/SMI/Composable-Infrastructure-Computational-Storage-webcast-9-15-20.pdf
  • https://www.electronicdesign.com/industrial-automation/article/21121821/whats-the-difference-between-opencapi-cxl-and-genz
  • https://www.snia.org/educational-library/composable-infrastructure-and-computational-storage-2020
  • https://searchitoperations.techtarget.com/definition/composable-infrastructure
  • https://blocksandfiles.com/2021/10/04/element-invisibility-in-composable-systems-pcie-vs-ethernet/

 

각주

  1. 캐시 일관성(cache coherence): 공용 메모리 풀에 연결된 각 프로세서가 각자 보유한 로컬 캐시로 작업을 하는 상황에서 한 프로세서의 캐시에서 변경된 값이 다른 프로세서 캐시의 값과 일치하기 않게 되는 경우, 즉각적으로 갱신된 값을 다른 프로세서에서 사용할 수 있게 해 값의 일관성을 유지하는 것을 말합니다.