zswap vs zram: 리눅스 메모리 관리, 어떤 기술을 선택해야 할까?

by DD
2개월 전
조회수 8

zswap은 디스크 스왑(Disk Swap) 앞에 위치하여, 메모리 압박 시 자동 계층화(Automatic Tiering)를 통해 성능 저하를 완화함

zram은 메모리 내 가상 디스크로, 용량 제한(Capacity Limit)으로 인해 메모리 부족 시 LRU 역전(LRU Inversion) 및 OOM(Out-Of-Memory) 문제를 야기할 수 있음

대부분의 경우 zswap을 권장하며, zram은 특정 환경(Embedded System)에서 제한적으로 사용될 수 있음

Fedora와 같은 일부 배포판은 보안상의 이유로 zram을 사용하지만, systemd-oomd와 같은 사용자 공간 OOM 관리자가 필요함

zswap의 자동 계층화(Automatic Tiering) 메커니즘

zswap은 메모리 관리 서브시스템(Memory Management Subsystem)과 긴밀하게 통합되어, 메모리 압박 시 자동 계층화(Automatic Tiering)를 수행한다. zswap은 압축된 페이지를 RAM에 저장하고, 메모리 풀이 가득 차면 LRU(Least Recently Used) 알고리즘을 기반으로 오래된 페이지를 디스크 스왑으로 이동시킨다. 이러한 방식은 성능 저하(Performance Degradation)를 최소화하며, 시스템의 안정성을 유지하는 데 기여한다.

zram의 블록 장치 아키텍처(Block Device Architecture)와 문제점

zram은 블록 장치(Block Device)로 작동하여, 메모리 부족 시 LRU 역전(LRU Inversion) 문제를 야기할 수 있다. zram이 가득 차면, 커널은 오래된 페이지를 빠르게 비우지 못하고, 활성 페이지가 느린 디스크로 밀려나는 상황이 발생한다. 이러한 구조는 시스템의 성능을 저하시키고, OOM(Out-Of-Memory) 킬러의 작동을 지연시켜 시스템 불안정성(System Instability)을 초래할 수 있다.

zswap과 zram의 성능 비교 및 트레이드오프(Trade-offs)

zswap과 zram은 압축을 통해 I/O를 줄이지만, 성능 저하(Performance Degradation)의 양상이 다르다. zswap은 압축이 불가능한 페이지를 디스크로 직접 전송하여 RAM과 CPU 자원을 절약한다. 반면, zram은 모든 데이터를 압축하므로, 압축률이 낮은 데이터는 메모리 낭비와 CPU 부하를 증가시킨다. zswap은 자동 계층화(Automatic Tiering)를 통해 성능 저하를 완화하지만, zram은 용량 제한으로 인해 OOM 문제를 야기할 수 있다.

Fedora의 zram 사용 사례와 systemd-oomd

Fedora는 보안상의 이유로 zram을 사용하지만, systemd-oomd와 같은 사용자 공간 OOM 관리자를 함께 사용한다. systemd-oomd는 메모리 압박을 사전에 감지하여 프로세스를 종료함으로써, OOM 킬러의 작동을 방지하고 시스템의 응답성을 유지한다. 하지만, 이는 zswap의 자동 계층화(Automatic Tiering)와 같은 장점을 활용하지 못하며, systemd-oomd의 설정 및 관리에 대한 추가적인 노력이 필요하다.

Debunking zswap and zram myths