TL;DR

  • 하드웨어가 압축을 처리하는 압축 램(Compressed RAM) 서비스는 실제 용량과 커널이 인식하는 용량이 달라지는 문제를 다루며, mm/cram.c는 이를 지원하는 방안을 제시함.
  • 압축 메모리는 캐시 라인·바이트 단위로 접근할 수 있어 페이지 테이블 매핑과 페이지 캐시 상태를 유지하면서도 읽기 접근 시 페이지 폴트, 쓰기 시 복사(COW), 소프트웨어 압축 해제 단계가 필요하지 않음.
  • 커널에 필요한 기능으로 익명 메모리 지원, 페이지 캐시 지원, 회수 및 메모리 계층 이동, 메모리 벌루닝, 빈 페이지 보고, 메모리 계층화, 엄격히 제어되는 NUMA 메모리 할당이 제시됨.
  • 지원에 필요한 기능은 하나를 제외하고 모두 커널에 이미 존재하거나 과거에 존재했던 기능임.
  • 테스트된 mm/cram.c 서비스는 TAOBench와 FIO 벤치마크에서 DRAM에 근접한 성능을 보였으며, 커널 트리 내 대부분의 파일시스템에서 페이지 캐시 정확성을 검증함.

발표 정보

  • 발표 제목: A Compressed RAM Service
  • 행사: Linux Plumbers Conference 2026
  • 일정: 2026년 10월 5~7일, Europe/Prague 시간대
  • 발표자: Gregory Price (Meta)

압축 램 서비스의 문제와 설계

  • 하드웨어가 압축을 처리하는 압축 램은 장치가 실제 용량을 사실과 다르게 나타낸다는 점에서 커널에 새로운 문제를 제기함. 커널은 확보한 모든 struct page가 실제 용량을 갖춘 메모리에 대응한다고 가정함.
  • zswap·zram과 달리 이 장치들은 압축 메모리에 캐시 라인·바이트 단위로 접근할 수 있음. 메모리는 페이지 테이블에 매핑되고 페이지 캐시에 존재할 수 있으며, 읽기 접근에서 페이지 폴트가 발생하지 않음. 쓰기 시 복사(COW)나 소프트웨어 압축 해제 단계도 없음.
  • 일반 메모리처럼 보이면서 마이그레이션, 매핑, 페이지 캐시 사용이 가능하지만 직접 쓰기는 제한될 수 있는 압축 램 서비스를 공식적으로 지원하려면 무엇이 필요한지 논의함.

필요한 커널 기능

  • 익명 메모리 지원: 페이지 테이블 쓰기 보호(COW, KSM)
  • 페이지 캐시 지원: 클린 캐시(깨끗한 페이지만 대상)
  • 메모리 회수 및 계층 이동
  • 메모리 벌루닝(동적 크기 조정)
  • 빈 페이지 보고(오래된 데이터 정리)
  • 메모리 계층화(접근 빈도, NUMA 균형 조정)
  • 엄격히 제어되는 NUMA 메모리 할당(전용 노드)
  • 이 기능 중 하나를 제외한 나머지는 커널에 이미 존재하거나 과거에 존재했던 기능임.

구현과 테스트

  • mm/cram.c에 구현된 테스트 완료 압축 램 서비스의 성능은 TAOBench와 FIO 벤치마크에서 DRAM에 근접함.
  • 페이지 캐시의 정확성을 커널 트리 내 대부분의 파일시스템에서 테스트함.
  • 발표 자료: A Compressed RAM Service (1).pptx