토픽 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