Meta, CRAM 메모리 압축 방안 공개: 읽기 성능은 네이티브 DRAM에 근접하며 ZRAM 대체 방안 탐색
요약
Meta가 LPC 2026에서 CRAM(Compressed RAM)이라는 실험적인 메모리 압축 방안을 공개했습니다. CRAM은 기존 ZRAM/zswap의 소프트웨어 오버헤드를 줄이고, 압축된 데이터를 NUMA 메모리 형태로 제공하여 네이티브 DRAM에 근접한 읽기 성능을 목표로 합니다. 이는 커널의 기존 메모리 관리 메커니즘을 활용해 새로운 유형의 메모리를 지원하는 연구 단계의 기술입니다.
핵심 포인트
- CRAM은 ZRAM/zswap과 달리 페이지 폴트 없이 압축 해제가 가능합니다.
- 읽기 전용 시나리오에서 네이티브 DRAM에 근접한 높은 읽기 성능을 보였습니다.
- 현재는 커널 서비스 프로토타입 단계이며, Linux 메인라인 진입까지 연구가 필요합니다.
Meta 엔지니어들이 10월 5일 체코 프라하에서 개최된 Linux Plumbers Conference 2026(LPC 2026)에서 CRAM(Compressed RAM)이라는 실험적인 메모리 압축 방안을 선보였습니다.
해당 방안의 목표는 단순히 ZRAM이나 zswap을 대체하는 것이 아니라, 압축된 데이터를 계속해서 "메모리" 형태로 존재하게 함으로써 전통적인 Swap 경로에서의 소프트웨어 오버헤드를 방지하는 것입니다. LPC 공식 자료에 따르면, CRAM은 이미 실제 테스트를 완료했으며 TAOBench 및 FIO 벤치마크 테스트에서 네이티브 DRAM에 근접한 성능을 달성할 수 있습니다.
잘 알려진 바와 같이, 현재 Linux에서 흔히 사용되는 메모리 압축 방안에는 ZRAM과 zswap이 포함됩니다. ZRAM은 메모리 내에 압축 블록 장치를 생성하며 커널은 Swap 경로에 따라 그 안의 데이터를 처리해야 합니다. 반면 CRAM의 설계는 다르며, 압축된 데이터는 여전히 페이지 테이블 매핑과 페이지 캐시 상태를 유지할 수 있고 Cacheline 및 Byte 단위 접근을 지원합니다. 따라서 데이터를 읽을 때 전통적인 방안처럼 페이지 폴트 예외를 통해 소프트웨어 압축 해제 프로세스를 트리거할 필요가 없습니다. LPC 공식 소개에 따르면, 이것이 CRAM이 ZRAM 및 zswap과 구별되는 핵심 특징입니다.
CRAM의 핵심 아이디어는 하드웨어 압축 후의 메모리를 블록 스토리지 장치로 모방하는 대신, 특수한 NUMA 메모리 형태로 Linux에 제공하는 것입니다.
LPC 자료에 따르면, CRAM은 엄격하게 제어되는 전용 NUMA 노드를 사용하여 커널이 메모리 이동, 회수, 다운그레이드, 메모리 벌룬 메커니즘, 유휴 페이지 보고 및 NUMA 메모리 균형을 포함한 기존의 메모리 관리 메커니즘을 계속 사용할 수 있도록 합니다.
이 설계는 전통적인 메모리 압축 방안의 소프트웨어 경로 오버헤드를 겨냥합니다. 읽기 전용 데이터의 경우, CRAM은 데이터를 일반 메모리로 스왑인한 후 압축을 해제할 필요 없이 압축 메모리에서 직접 읽을 수 있습니다. 이러한 모드에서 CRAM의 성능은 네이티브 DRAM 수준에 근접할 수 있습니다.
이번 시연에서 공개된 테스트 데이터에 따르면, 순수 읽기 시나리오에서 CRAM은 최악의 경우 초당 약 4억 8,900만 회의 작업을 달성할 수 있는 반면, ZRAM은 초당 약 110만 회 수준입니다. 이 데이터 세트를 기준으로 계산하면 두 방식의 차이는 약 444배이며 452배가 아니므로, 공식적인 "452배 향상"이라는 주장은 이상적인 환경에서만 실현 가능할 수 있습니다.
작업 부하에 쓰기 작업이 포함될 경우 CRAM의 장점은 현저히 줄어듭니다. 압축된 데이터는 원래 위치에서 직접 수정될 수 없기 때문에, 쓰기 시에는 페이지 폴트 처리를 통해 해당 Folio를 원래의 NUMA 노드로 이동시킨 후 수정을 완료해야 합니다.
그럼에도 불구하고, 자료에 언급된 최악의 경우에도 CRAM은 ZRAM보다 약 5.4배의 성능에 도달하지만, 이 수치 역시 일반적인 성능 결론이 아닌 특정 벤치마크 테스트 결과로 이해해야 합니다.
LPC 공식 자료에 따르면, CRAM은 현재 테스트를 거친 커널 서비스 프로토타입일 뿐이며 Linux 메인라인에 진입한 성숙한 기능이 아닙니다.
Meta 엔지니어 Gregory Price는 CRAM 구현에 필요한 대부분의 Linux 커널 기초 메커니즘이 이미 존재하며, 현재 해결해야 할 과제는 이러한 "실제 용량과 물리적 용량이 일치하지 않는" 메모리 장치를 Linux의 기존 메모리 모델에 어떻게 부합하게 만들 것인지라고 설명했습니다.
IT홈은 현재 CRAM이 여전히 연구 및 커뮤니티 논의 단계에 있으며, 아직 Linux 메인라인에 곧 진입할 공식 기능으로 간주될 수 없음을 알립니다. Meta가 이번에 공개한 중점은 이미 표준화되거나 상업적으로 배포된 제품을 발표하는 것이 아니라, 기존 Linux 메모리 관리 메커니즘을 활용하여 이러한 새로운 유형의 압축 메모리를 지원하는 방법을 탐색하는 것입니다.
원문 출처: ITHome
※ 해당 기사는 퀘이사존 공식 기사가 아닌 해외 뉴스/기사를 번역한 기사입니다.
퀘이사존 견해와 주관은 포함되어 있지 않습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 퀘이사존 하드웨어의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기