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
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요