Learning
토픽 49 / 85·메모리 관리

메모리 압축 (Memory Compression)

메모리 압축 (Memory Compression)

메모리가 부족할 때 페이지를 스왑하는 대신 압축하여 메모리에 유지하는 기법으로, 디스크 I/O보다 CPU 오버헤드가 낮아 성능 향상

목적: 스왑 감소, 메모리 효율, 성능 향상, 디스크 I/O 절감

특징: 압축 풀, CPU vs I/O 트레이드오프, 투명한 동작, 계층적 메모리

Linux zswap

  • 스왑 프론트엔드로 동작, 스왑 전에 압축 시도
  • 압축 실패 또는 풀 가득 차면 실제 스왑
  • 압축 알고리즘: LZO, LZ4, ZSTD 등

Linux zram

  • 메모리 기반 블록 디바이스, 스왑 디바이스로 사용
  • 압축된 RAM 디스크, 안드로이드에서 널리 사용

압축 비율: 일반적으로 2:1 ~ 3:1, 데이터 특성에 따라 다름

동작 과정

장점: 스왑 I/O 감소, 지연시간 단축, SSD 수명 연장

단점: CPU 오버헤드, 압축 불가 데이터, 메모리 단편화

적용사례: Linux(zswap/zram), macOS(Memory Compression), Windows(Memory Compression), Android

비교: 압축(CPU/빠름) vs 스왑(디스크I/O/느림) vs OOM Kill(프로세스종료)

연관: 스왑, 가상 메모리, LZ4, 메모리 관리, zswap