
리눅스를 사용하고 있다면 새 메모리 모듈을 구매하지 않고도 가용 RAM 용량을 사실상 늘릴 수 있습니다. Zram, Zswap, Zcache는 PC의 RAM 내용을 압축하여 메모리를 실질적으로 확장해 주는 기술입니다. 그렇다면 이 중 어떤 것을 사용해야 할까요? 어느 것이 더 나은 선택일까요? 지금부터 자세히 알아보겠습니다.
RAM 압축의 장점
소니와 마이크로소프트의 차세대 콘솔 발표를 보셨다면, 두 회사 모두 저장소 속도를 크게 강조했다는 점을 눈치채셨을 겁니다. 여기에는 분명한 이유가 있습니다. 최신 고사양 PC에서조차 저장소는 가장 큰 병목 지점이기 때문입니다.

이러한 RAM 압축 솔루션들의 궁극적인 목표는 컴퓨터의 RAM과 상대적으로 느린 저장 장치 간에 오가는 데이터의 양을 최소화하는 것입니다. 이 점을 기억해 두는 것이 중요합니다. 앞으로 살펴보겠지만, 바로 이 부분이 세 기술을 구분하는 핵심 요소이기 때문입니다.
Zram
Zram은 현재 리눅스에서 가장 단순하고 직관적인 RAM 압축 솔루션입니다. 예전에는 'compcache'라는 이름으로 불렸으며, 리눅스가 여러 스왑 장치를 지원한다는 특성을 활용해 컴퓨터의 RAM 안에 추가적인 스왑 공간을 하나 이상 생성하는 방식으로 동작합니다.
Zram은 세 개의 저장 공간 계층 구조를 만듭니다. 먼저 RAM 안에 새로운 압축 스왑 볼륨을 생성하는데, 이 볼륨은 계층상 RAM과 저장 장치 사이에 위치합니다. RAM이 데이터로 가득 차면 초과된 데이터를 이 압축 스왑으로 옮기고, 압축 스왑마저 가득 차면 비로소 저장 드라이브의 실제 스왑 파티션으로 데이터를 이동시킵니다.
이렇게 생성된 스왑 장치는 PC의 느린 물리적 저장소에 있는 스왑보다 높은 우선순위를 할당받아 먼저 사용됩니다. 또한 LZ4나 LZO 같은 다양한 압축 알고리즘 중 하나를 활용해 스왑 공간에 최대한 많은 데이터를 담아냅니다.

현대 프로세서는 이미 RAM에 저장된 데이터를 압축하고 해제하는 속도가 SSD나 HDD에 데이터를 쓰거나 읽는 속도보다 빠른 수준에 도달했습니다. 따라서 압축 과정이 컴퓨터 성능에 미치는 영향은 미미한 수준입니다.
주목할 만한 점은 Zram이 다른 스왑 장치 없이 독립적으로 작동한다는 것입니다. 즉, 실제 저장소의 백업 없이도 사용할 수 있기 때문에 임베디드 시스템이나 라이브 CD 환경에서도 활용할 수 있습니다.
ZSwap
Zswap은 Zram보다 다소 복잡한 방식으로 작동합니다. 컴퓨터의 RAM과 느린 저장 장치 사이의 교차 지점에 지능형 압축을 추가함으로써 두 저장 공간 간의 관계를 개선합니다.

Zswap에서는 압축된 RAM 영역과 저장 장치에 이미 존재하는 스왑 볼륨이 하나의 지능형 저장 시스템 안에서 노드처럼 처리됩니다. Zswap 역시 컴퓨터 RAM의 일부를 차지하지만, RAM에 들어가지 못하는 데이터를 무조건 옮겨 담은 뒤 압축을 시도하는 방식이 아닙니다. 대신 RAM에 맞지 않는 데이터를 먼저 압축해 보고, 압축에 성공하면 RAM에 저장하고, 압축되지 않는 데이터라면 기존 스왑 공간으로 보냅니다.
이러한 방식 덕분에 Zswap은 가용 RAM과 스왑 공간을 더 효율적으로 활용할 수 있습니다. 예를 들어 압축이 불가능한 데이터 때문에 자신이 사용하는 RAM 영역을 낭비하는 일이 없기 때문입니다.
기존 스왑 공간에 의존하기 때문에 Zswap은 모든 리눅스 PC 설치 환경에 적합하며, 특히 RAM이 4GB 미만인 시스템에서 그 진가를 발휘합니다.
Zcache
Zcache는 tmem('Transcendent Memory', 초월 메모리) 시스템과 연동하여 리눅스 커널에 현재 사용 중이 아닌 데이터를 저장하는 더욱 유연한 방법을 제공합니다.
Zcache는 커널 위에 투명한 메모리 관리 계층을 하나 추가하여 현재 사용되지 않는 모든 데이터를 압축합니다. 모든 바이트를 일일이 관리해야 하는 기존 방식과 달리, Zcache를 사용하면 리눅스 커널이 tmem 인터페이스를 통해 데이터 페이지 전체를 '풀(pool)'에 저장할 수 있습니다. 이후 Zcache 백엔드가 이렇게 묶인 데이터 그룹들을 압축합니다.
Zswap과 마찬가지로 Zcache도 압축된 데이터만 RAM에 유지하고 압축되지 않은 페이지는 실제 스왑으로 밀어냄으로써 양쪽 저장 공간을 최대한 효율적으로 활용합니다.
그래서 어느 것이 가장 좋은가?
이론상으로는 Zcache가 세 솔루션 중 가장 뛰어난 성능을 제공합니다. 하지만 실용성이라는 변수를 고려하면 반드시 최선의 선택이라고 말하기는 어렵습니다. Zcache는 고급 기능에도 불구하고 지원이 매우 제한적입니다. 개발이 정체된 상태로 방치되다가 리눅스 커널 버전 3.11에서 완전히 제거되었으며, 오늘날 이를 사용하려면 여러 가지 번거로운 작업을 거쳐야 하고, 그 결과조차 Zswap을 사용했을 때와 큰 차이가 없을 가능성이 높습니다.
반면 Zram은 RAM에 저장된 가상 볼륨을 스왑 공간으로 사용하는 것 이상의 기능이 없어 다소 제한적입니다. RAM이 부족한 시스템에는 도움이 되지만, 데이터의 실제 내용과는 무관하게 A 지점에서 B 지점으로, 다시 C 지점으로 무조건 옮기는 방식으로 작동하기 때문입니다.
결론적으로 대부분의 리눅스 사용자에게는 배포판과 무관하게 Zswap이 가장 현명한 선택입니다. Zswap을 실제로 활용하는 방법이 궁금하다면 관련 설정 가이드를 참고해 보시기 바랍니다.