zram의 개념과 원리

zram(이전 명칭: compcache)은 리눅스 커널에서 제공하는 메모리 압축 기술이다. RAM의 일부를 압축해 가상 블록 장치로 사용하며, 2009년 Nitin Gupta가 처음 개발했다. 이후 리눅스 커널 3.14부터 정식으로 통합되어 지금까지 널리 사용되고 있다. 핵심은 디스크 기반 스왑 대신 압축된 RAM을 스왑 공간으로 활용해 디스크 I/O 부담 없이 메모리 사용 효율을 높이는 데 있다. 특히 메모리가 제한된 환경에서 효과적이다.

zram 장치는 데이터를 메모리에 저장하기 전에 압축하고, 접근할 때 다시 압축을 해제한다. 이 과정에서 CPU 리소스를 일부 사용하지만 디스크 I/O를 피할 수 있어 전체 성능에 도움이 되는 경우가 많다. 일반적으로 zram은 LZO(Lempel-Ziv-Oberhumer), LZ4, ZSTD(Zstandard) 같은 고속 압축 알고리즘을 사용하며, 2:1에서 4:1 정도의 압축률을 기대할 수 있다. 압축 알고리즘은 시스템 요구사항에 따라 선택할 수 있고, Ubuntu 24.04에서는 기본적으로 속도와 압축률의 균형이 좋은 LZ4를 사용한다.

zram의 주요 장점

메모리 용량 확장

zram의 가장 큰 장점은 물리적인 메모리 증설 없이도 가용 메모리를 늘릴 수 있다는 점이다. 텍스트 데이터가 많은 환경에서는 최대 4배까지 압축되기도 하고, 평균적으로도 약 2배 수준의 압축률을 기대할 수 있다. 따라서 8GB RAM 시스템에서도 실질적으로 12-16GB에 가까운 메모리 효과를 볼 수 있어 추가 하드웨어 투자 없이 여유를 확보할 수 있다.

시스템 응답성 향상

디스크 기반 스왑은 접근 속도가 느려 시스템 응답성을 떨어뜨린다. 특히 HDD에서는 수십 밀리초 단위의 지연이 발생할 수 있다. 반면 zram은 RAM 안에서 동작하므로 디스크 스왑보다 훨씬 빠르게 데이터에 접근할 수 있고, 지연도 마이크로초 단위에 머무는 경우가 많다. 이런 특성 덕분에 메모리 부족 상황에서도 시스템 응답성을 유지하는 데 도움이 된다. 특히 저사양 시스템이나 메모리가 제한된 환경, 웹 브라우저나 IDE처럼 메모리 사용량이 많은 애플리케이션을 실행하는 환경에서 효과적이다.

디스크 수명 연장

SSD와 같은 저장 장치는 쓰기 횟수에 제한이 있어 스왑 사용이 많을수록 수명이 짧아질 수 있다. 일반적인 SSD는 수십~수백 TBW(Terabytes Written) 수준의 수명을 가지므로, 과도한 스왑 사용은 수명 단축 요인이 된다. zram은 디스크 기반 스왑 사용량을 줄여 저장 장치의 쓰기 부담을 낮출 수 있다. 특히 임베디드 시스템이나 저가형 SSD를 사용하는 환경, 서버처럼 장시간 가동되는 시스템에서 의미가 크다.

전력 효율성

모바일 기기나 노트북에서는 디스크 I/O가 많을수록 전력 소모가 늘어난다. 특히 HDD는 물리적인 헤드 이동과 플래터 회전 때문에 전력 소모가 크고, SSD도 쓰기 작업 시 일정한 전력을 사용한다. zram은 디스크 접근을 줄여 배터리 사용 시간에 긍정적인 영향을 줄 수 있다. 물론 압축과 해제 과정에서 CPU를 사용하지만, 많은 환경에서는 디스크 I/O를 줄이는 이점이 더 크게 작용한다.

Ubuntu 24.04에서의 zram 간편 설치 및 사용

Ubuntu 24.04에서는 zram-config 패키지를 설치해 비교적 간단하게 zram을 사용할 수 있다. 복잡한 커널 모듈 설정이나 별도 스크립트 작성 없이 패키지 설치만으로 기본 구성을 적용할 수 있다.

sudo apt install zram-config

이 명령어로 zram-config 패키지를 설치하면 시스템이 zram을 자동으로 설정하고 활성화한다. 또한 부팅 시 자동으로 시작되도록 등록하므로, 대부분의 경우 추가 설정 없이 바로 사용할 수 있다.

기본 설정

Ubuntu 24.04에서 zram-config 패키지를 설치하면 다음과 같은 기본 설정이 자동으로 적용된다.

  • RAM의 약 50%를 zram 크기로 설정하여 물리 메모리와 압축 메모리 간의 균형을 유지한다
  • 압축 알고리즘은 효율적인 LZ4를 사용하여 빠른 압축과 해제 속도를 보장한다
  • 스왑 우선순위를 100으로 설정하여 디스크 스왑(기본 우선순위 -2)보다 우선적으로 사용되도록 한다
  • 시스템 부팅 시 자동으로 활성화되어 사용자의 별도 개입 없이 지속적으로 작동한다

이 기본 설정은 대부분의 사용자에게 무난하며, 일반적인 데스크톱 워크로드에서는 별도 조정 없이도 활용할 수 있다.

설치 확인

설치 후 zram이 정상적으로 작동하는지 확인하려면 다음 명령어를 사용하면 된다:

zramctl

또는

swapon --show

출력 결과에 /dev/zram0가 표시되면 zram이 정상적으로 설치되고 활성화된 것이다.

zram 사용 시 고려사항

대부분의 일반적인 사용 환경에서는 기본 설정만으로도 충분히 활용할 수 있다. 특히 웹 브라우징, 문서 편집, 코드 개발 같은 일반적인 워크로드에서 효과적이다. 매우 메모리 집약적인 응용 프로그램을 사용하거나 여러 개의 가상 머신을 실행하는 환경에서는 체감 차이가 더 커질 수 있다.

하이버네이션과 zram: 하이버네이션(절전 모드)이 필요한 경우 zram 대신 zswap 사용을 고려해야 하며, 이는 zram이 순수 메모리 기반이라 전원이 꺼지면 데이터가 사라지는 반면 zswap은 디스크 스왑과 함께 작동하여 하이버네이션을 지원하기 때문이다. zswap은 메모리 압축 캐시 역할을 하며 압축된 데이터를 RAM에 저장하되 필요시 디스크로 내보낼 수 있어, zram과 디스크 스왑의 중간 형태로 볼 수 있다.

메모리 용량별 효과: 메모리가 매우 충분한 시스템(32GB 이상)에서는 zram의 효과가 제한적일 수 있으며, 스왑이 거의 사용되지 않는 환경에서는 zram을 활성화해도 성능 향상을 체감하기 어렵다. 반면 8GB 이하의 메모리를 가진 시스템이나 다수의 브라우저 탭을 열어두는 사용 패턴에서는 zram의 효과가 매우 크다.

CPU 부하 고려: CPU 부하가 이미 높은 환경에서는 압축과 해제 과정에서 추가 부하가 발생할 수 있으나, 현대 프로세서는 매우 효율적인 압축 성능을 제공하므로 대부분의 경우 CPU 오버헤드는 1-3% 수준에 불과하며 디스크 I/O 대기 시간 감소 효과가 훨씬 크다.

결론

Ubuntu 24.04에서 zram은 비교적 간단하게 적용할 수 있는 메모리 최적화 수단이다. 특히 메모리가 제한된 시스템에서는 디스크 스왑 사용을 줄이고 시스템 응답성을 유지하는 데 도움이 될 수 있다. 또한 저장 장치 쓰기 부담 감소와 전력 효율 측면에서도 장점이 있다. Ubuntu가 제공하는 zram-config 패키지를 사용하면 기본 설정만으로도 손쉽게 시작할 수 있다.

메모리 부족 현상을 자주 겪거나 시스템 응답성을 개선하고 싶은 Ubuntu 24.04 사용자라면 zram-config를 한 번 적용해 볼 만하다. 특히 8GB 이하의 RAM을 가진 시스템이나 여러 애플리케이션을 동시에 실행하는 환경에서 효과를 체감하기 쉽다.