본문으로 이동

‘경이로운 확장성’ CXL 메모리: 삼성전자, 레드햇과 함께 생태계를 확장하다

  • 메일
지난 12월, 삼성전자가 업계 최초로 엔터프라이즈 리눅스 글로벌 1위 기업인 레드햇 (Red Hat)과 CMM-D (Compute Express Link™ (CXL™) Memory Module DRAM) 메모리 동작 검증에 성공했다는 소식을 알렸다1. CXL 기반의 제품인 CMM-D의 성공적인 동작 검증은 차세대 메모리 분야 소프트웨어 기술 협력의 결실이라는 점에서 의미가 크다. 오픈소스 생태계에서 레드햇 엔터프라이즈 리눅스는 높은 안정성과 보안성으로 가장 신뢰받는 소프트웨어다. 실제로 Fortune 선정 500대 기업의 90% 이상이 레드햇과 함께하고 있다2. 레드햇은 특허를 출원하는 기존 방식 대신 운영체제를 업데이트하고 쉽게 배포하는 형태로 개발하는 방식을 택하며 소프트웨어에 새로운 혁신을 일으키며 오픈소스 생태계의 선두주자로 자리 잡았다. 소프트웨어 그리고 하드웨어 각각의 분야에서 혁신을 추구하는 레드햇과 삼성전자 메모리, 이 둘의 협업의 여정과 이번의 성공은 어떤 의미를 가지는지 알아보자. 삼성전자의 차세대 메모리, 레드햇과 만나다
레드햇 에코시스템 카탈로그에 등록된 삼성전자 메모리 제품 리스트
레드햇 에코시스템 카탈로그에 등록된 삼성전자 메모리 제품 리스트
레드햇 에코시스템 카탈로그에 등록된 삼성전자 메모리 제품 리스트
기업용 서버에 맞게 폭 넓은 하드웨어를 지원하는 Red Hat Ecosystem에는 현재 13개의 삼성전자 메모리 제품이 등록되어 있다. 등록된 제품들은 Linux와의 호환성 및 높은 수준의 보완과 통합 지원을 받을 수 있다. 또한, Red Hat Enterprise Linux (이하 RHEL)을 사용하고 있는 기업고객을 잠재 고객으로 삼을 수 있고, 최대 10년의 Lifecycle 동안 레드햇의 지원을 받을 수 있다. 그리고 2022년 5월, 삼성전자와 레드햇은 소프트웨어와 메모리 하드웨어를 통합하고 확장 가능한 에코 시스템을 구축하기 위한 MoU를 체결하며 본격적인 협력에 박차를 가했다.3
2022년 5월 MOU 협약식에서의 삼성전자 메모리사업부 상품기획실 배용철 부사장(우)과  레드햇 아시아태평양총괄 마르옛 안드리아스(Marjet Andriesse) 부사장(좌)
2022년 5월 MOU 협약식에서의 삼성전자 메모리사업부 상품기획실 배용철 부사장(우)과  레드햇 아시아태평양총괄 마르옛 안드리아스(Marjet Andriesse) 부사장(좌)
2022년 5월 MOU 협약식에서의 삼성전자 메모리사업부 상품기획실 배용철 부사장(우)과 레드햇 아시아태평양총괄 마르옛 안드리아스(Marjet Andriesse) 부사장(좌)
이 협력을 통해 삼성전자와 레드햇은 차세대 메모리 검증 및 저변 확대를 위해 삼성 메모리 리서치 센터 (SMRC: Samsung Memory Research Center)에서 CXL 메모리와 Red Hat Enterprise Linux의 검증을 진행했다. Red Hat Enterprise Linux – CMM-D를 품다 2023년 11월에 출시된 Red Hat Enterprise 9.3에서 CXL을 지원하는 Driver들이 제공되어 CXL Type 3 Device (Memory Expander)를 지원한다. 삼성전자의 CXL 기반의 메모리 모듈인 CMM-D 제품이 이에 해당한다.
CXL 메모리 사용 예시 (CXL Consortium)
CXL 메모리 사용 예시 (CXL Consortium)
CXL 메모리 사용 예시 (CXL Consortium)
그렇다면 왜 CXL 메모리인 CMM-D일까. 전 세계적인 AI 열풍 속에서 차세대 인터페이스로 주목받고 있는 CXL은 PCIe 5.0 인터페이스 기반으로 CPU, GPU 등과 메모리를 연결하는 통합 인터페이스 표준이다. 이 새로운 인터페이스의 핵심 가치는 바로 ‘확장성’인데, AI, 머신러닝 등 폭발적으로 증가한 데이터양을 보다 빠르고 효율적으로 해결할 방법으로 주목받고 있다. 기존 DRAM DDR 인터페이스는 DRAM Module 용량과 DDR Slot 수 제한으로 메모리 확장에 한계를 가지고 있다. 메모리 확장을 위해 CPU와 메모리로 이루어진 메모리 Node들을 구성하고, Host의 메모리가 부족하면 Network로 연결된 메모리 Node의 메모리를 사용하는 RDMA (Remote Direct Memory Access)을 사용할 수 있지만, Data 이동에서의 S/W Overhead로 성능이 저하되고 CPU 및 시스템 추가의 비용도 증가하는 문제가 있다. 이 같은 문제를 해결하고자 삼성전자는 업계 최초로 CXL 기반의 메모리 솔루션인 CMM-D를 선보였다. CMM-D를 통해 S/W Overhead를 줄이며, PCIe 인터페이스와 연결된 SSD 자리에 DRAM을 장착할 수 있어 System 추가 없이 대용량 메모리로 확장이 가능하다. 차세대 메모리 지원을 위한 소프트웨어 ‘SMDK’까지
차세대 메모리 지원을 위한 소프트웨어 ‘SMDK’까지
차세대 메모리 지원을 위한 소프트웨어 ‘SMDK’까지
Image source: Red Hat
NUMA (Non-Uniform Memory Access)는 각 CPU 별로 접근할 수 있는 메모리 영역을 구분하여 병목 현상을 해결하며 메모리를 효율적으로 관리하는 방법 중 하나이다. 리눅스 또한 NUMA를 지원하고 있으며 CMM-D의 활용을 극대화 하기 위해 특정 CPU에 할당되지 않은 상태에서도 CXL 메모리에서 NUMA가 동작하도록 하여, DIMM에만 한정되었던 NUMA가 CXL 메모리로 연결된 디바이스에서도 동작이 가능하다. 구체적으로Kernel 5.12 이상의 리눅스 환경에서는 Memory Hotplug 기능을 이용하여 NUMA 노드 및 DMA 영역에 매핑 테이블을 만든다. CXL Device 가 장착된 시스템의 EFI_MEMORY_SP (Special Purpose Memory) 활성화되어 있는 경우 CXL 장치는 DAX Device로 생성되며, 이 장치를 통해 Online Memory Hotplug 가 가능해진다. 리눅스가 메모리를 어떻게 배열했는지는 /proc/buddyinfo, /proc/zoneinfo에서 확인할 수 있다.4 현재 CMM-D와 같은 차세대 메모리를 지원, 활용하기 위한 소프트웨어에 대한 논의가 활발하게 진행되고 있다. 삼성전자는 CXL 기반의 이종 메모리 풀을 위한 Full stack SW 개발 도구인 SMDK를 2021년부터 개발하여, 2022년 3월부터 오픈소스 형태로 공유해오고 있다. SMDK는 CXL 메모리를 사용하는 응용과 유저를 위한 SW 개발/관리 도구와 CXL Use-case를 활성화 하기 위한 여러 실험적인 Memory Tiering 기능들을 제공한다.
SMDK는 CXL 메모리를 사용하는 응용과 유저를 위한 SW 개발/관리 도구와 CXL Use-case를 활성화 하기 위한 여러 실험적인 Memory Tiering 기능
SMDK는 CXL 메모리를 사용하는 응용과 유저를 위한 SW 개발/관리 도구와 CXL Use-case를 활성화 하기 위한 여러 실험적인 Memory Tiering 기능
Image source: Github
NUMA기반으로 더욱 최적화된 데이터 처리: Memory Tiering&Pooling
CPU가 없는 NUMA node의 CMM-D
CPU가 없는 NUMA node의 CMM-D
CPU가 없는 NUMA node의 CMM-D
[root@rhel93-cxl ~]# numactl -H available: 3 nodes (0-2) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 node 0 size: 63625 MB node 0 free: 59498 MB node 1 cpus: 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 node 1 size: 64457 MB node 1 free: 23455 MB node 2 cpus: node 2 size: 131072 MB node 2 free: 131070 MB node distances: node 0 1 2 0: 10 21 14 1: 21 10 24 2: 14 24 10
CMM-D는 CPU가 없는 NUMA node로 설정되어 메모리 부하가 높은 AI/ML 및 5G 시스템에 활용 가능해 더욱 효율적이고 최적화된 데이터 처리가 가능하며, 기존 기능을 변경 없이 쓸 수 있다는 장점이 있다. □ Memory Tiering (Page Demotion) 자주 액세스하지 않는 데이터를 로컬 메모리에 저장하면 자주 사용하는 메모리(핫 메모리) 성능에 손해가 발생한다. 이러한 문제점은 CXL 메모리를 이용하여 RHEL에서 제공하는 Memory Tiering 기능을 통해 개선할 수 있다. Memory Tiering 기능은 자주 사용하는 핫 메모리를 로컬 메모리에 배치하고, 자주 사용하지 않는 메모리는 CXL 계층에 배치함으로써 필요시 메모리 간 데이터 마이그레이션을 구현하는 방식이다.
Memory Tiering (Page Demotion)
Memory Tiering (Page Demotion)
Image Source: IEEE Explore5
□ Zero-CPU NUMA Hypervisor (KVM) 대규모 클라우드 환경에서는 VM (Instance)에 예약된 로컬 메모리로 인해 서비스 확장에 제약이 있다. 이러한 제약은 CXL 메모리 영역에 VM 을 할당하고 Resource Scale-up 을 통해 최적화된 인프라를 구성하여 극복할 수 있다. 아래는 KVM 환경에 CXL NUMA Memory를 할당하는 예제이다.
Zero-CPU NUMA Hypervisor (KVM)
Zero-CPU NUMA Hypervisor (KVM)
□ Container (Podman) 기존 VM 내 애플리케이션이 컨테이너 환경으로 옮겨가면서 로컬 메모리의 한계로 인해 노드가 대규모로 확장되고 있다. 이를 극복하기 위해 CXL 메모리 영역에 Container 애플리케이션을 할당하고 향후 Scale-up 이 유용하게 인프라를 구성할 수 있다. 아래는 Podman 환경에 CXL NUMA Memory를 할당하는 예제이다.
Container (Podman)
Container (Podman)
□ 응용 프로세스 활용 기본적으로 CXL 메모리를 확장하게 되면 Zero CPU NUMA 형태의 Zone이 생성된다. 그리고 CXL Memory를 커널에 할당할 때, Zero CPU NUMA Zone은 Normal 및 Movable 속성을 가지고 있는 상태로 커널에 할당할 수 있다. 이 할당된 메모리는 애플리케이션에서 필요 시 NUMA Binding 기술을 이용하여 활용할 수 있다.
응용 프로세스 활용
응용 프로세스 활용
□ 대용량 페이지 (Hugepage 설정) 커널은 메모리에서 디스크로 페이지를 교환하거나 메모리 내에서 디스크를 캐싱하여 메모리를 가장 효율적으로 사용하려고 한다. 이는 대부분 환경에서 잘 작동하지만, 데이터베이스 애플리케이션을 활용하는 경우 스토리지에서 대기 중인 항목으로 인해 높은 ‘iowait’ 또는 ‘응답하지 않는 서버’와 같은 문제가 발생하는 것을 볼 수 있다. 이는 애플리케이션이 데이터에 액세스하려고 시도하는 동안 메모리 페이지를 교체하거나 교체하려고 할 때 디스크 Access Count 가 높기 때문에 발생한다. Hugepage를 사용하면 애플리케이션에서 사용할 수 있도록 미리 할당된 충분한 공간을 확보할 수 있다. 이 메모리는 디스크에서 스왑 인/아웃되지 않으며 이전 환경에서 나타났던 비효율 을 일부 완화해 준다. 또한 메모리 관리 시 오버헤드 감소와 같은 다른 이점도 제공한다.
대용량 페이지 (Hugepage 설정)
대용량 페이지 (Hugepage 설정)
□ 램디스크 설정 램디스크 파티션에 저장된 파일은 메모리가 디스크보다 동작 속도가 빠르기 때문에 하드 드라이브 보다 더 빠르게 데이터에 액세스할 수 있다. 일부 데이터에 지속적으로 액세스하면 성능을 높이는 데 도움이 된다. (예: 램디스크 파티션을 사용하여 웹서버 데이터를 저장하는 경우, 데이터가 메모리에 보관되므로 더 빠른 속도로 데이터에 액세스할 수 있다.)
램디스크 설정
램디스크 설정
CXL 메모리 활용 가이드 배포 CMM-D이 검증되면서 데이터센터 고객들은 별도의 소프트웨어 변경 없이 쉽게 삼성의 차세대 메모리를 사용할 수 있게 되었다. 더 나아가 소프트웨어, 서버, 칩셋 업체들과 협력을 확대하고 차세대 메모리 상용화를 위해 CMM-D를 RHEL에 손쉽게 설치하고 활용할 수 있는 가이드 문서를 배포할 예정이다. 가이드 문서는 레드햇 홈페이지를 통해 확인할 수 있다. 이번 메모리 분야 소프트웨어 기술 관련 협력의 결실은 CXL 기반의 메모리 제품의 저변을 확대할 수 있는 가능성을 한 단계 발전시켰다는 점에서 의미가 크다. 레드햇 이태훈 상무는 “CMM-D를 위한 Memory Management의 변경은 많은 논의를 필요로 한다”라며 “Hugepage가 필수적인 5G vDU, 5G UPF와 같은 5G Network 응용이나 AI/ML과 같은 메모리 수요가 높은 응용에 활용을 고려해 볼 필요가 있다”라고 말했다. 그리고 “CMM-D를 위한 Kernel.org와 같은 커뮤니티의 아키텍처 상의 합의가 이루어지기 전까지는 응용에서 메모리 계층화를 관리하는 방식이 필요하다”라고 덧붙였다. 또한 “OpenStack 혹은 Openshift와 같은 클라우드 플랫폼에서 활용 가능한 Disaggregated Computing에 대한 논의 또한 필요하다”라고 강조하며 “IaaS, PaaS 수준의 지원을 위해 SMRC와 긴밀하게 협조하고 있다”라고 전했다. 삼성전자 DRAM 솔루션팀 김경산 수석 연구원은 “Red Hat은 리눅스 진영의 전통적인 강자로, 이번 CXL Enablement의 첫 협업은 당사 메모리 제품의 에코 시스템이 활성화되는데 큰 의미가 있다고 생각한다”라며 “향후 양사 간 통합 시스템 솔루션 개발을 위해 오픈 소스 등을 통한 긴밀한 협업을 기대한다”라고 말했다. 또한 금번 과제를 주관한 삼성전자 메모리 리서치 센터 (SMRC) 김병수 파트장은 “삼성과 레드햇의 협업으로 CMM-D가 Enabling 된 것은 긴 여정의 시작에 불과하다. 운영체제 업체뿐만 아니라 서버, 디바이스, 플랫폼 및 응용에 이르는 다양한 파트너들이 함께 협업하여 CXL 생태계 확장에 동참하길 기원하며 SMRC가 이를 위한 최적화된 오픈 플랫폼을 제공하겠다”라는 포부를 밝혔다. 현재 양사는 모든 컴퓨팅 자원 (CPU, GPU, Memory)이 빠른 네트워크로 연결되는 분산 메모리에 대한 Reference Architecture를 구축하고 구현 가능한 모델을 만들기 위한 협업을 준비하고 있다. 삼성전자와 레드햇이 참여하고 있는 다양한 포럼 및 기술 활동을 통해 이러한 협업을 구체화하고 있으며 삼성 메모리 리서치 센터 (SMRC)는 CXL 생태계 확장을 위한 노력을 지속해 나갈 예정이다.
1 https://www.redhat.com/ko/about/brand/standards/history 2 https://www.ibm.com/downloads/cas/PNQ4LQ3Z 3 https://access.redhat.com/solutions/700683 4 https://github.com/OpenMPDK/SMDK/wiki/2.-SMDK-Architecture#21-high-level-architecture 5 https://iowngf.org/