ZRAM은 CPU 연산력의 일부를 희생하는 대신 더 많은 RAM을 확보할 수 있는 훌륭한 솔루션입니다. 하지만 ZRAM에 할당되는 메모리 양을 늘리거나 줄이려면 어떻게 해야 할까요? 압축 알고리즘은 어떻게 변경할 수 있으며, 어떤 상황에서 이러한 변경이 유용할까요? 이 글에서는 우분투에서 ZRAM을 구성하는 방법을 자세히 알아보겠습니다.
현재 ZRAM 상태 확인하기
대부분의 사용자는 zram-config 스크립트를 통해 우분투, 민트 또는 기타 호환 배포판에서 ZRAM을 사용합니다. 이 스크립트는 가장 간단한 방식으로 ZRAM을 활용할 수 있게 해주기 때문입니다. 다음 명령어로 설치할 수 있습니다.
sudo apt install zram-config
기본값으로 ZRAM은 실제 RAM 용량의 절반을 사용하며, CPU 코어 수만큼 여러 파티션으로 나뉩니다. 다음 명령어로 이를 확인할 수 있습니다.
cat /proc/swaps
위 스크린샷에서 일반적인 스왑 파일("/var/cache/swap/swapfile" 항목)과 8개의 ZRAM 볼륨이 공존하는 것을 볼 수 있습니다. 테스트 시스템에는 8GB의 RAM이 장착되어 있었는데, ZRAM 볼륨들을 모두 합치면 총 4GB로 전체 RAM의 절반에 해당합니다. 다만 사용 목적에 따라 이 크기를 조정하는 것이 좋을 수 있습니다.
- 멀티미디어나 동영상 작업을 주로 한다면, 이런 데이터는 압축률이 낮기 때문에 ZRAM 크기를 줄이고 실제 스왑 크기를 늘리는 것이 좋습니다.
- 반대로 대형 데이터베이스처럼 압축률이 높은 데이터를 다룬다면 ZRAM 크기를 늘려 시스템 반응 속도를 개선할 수 있습니다.
또 하나 살펴볼 만한 설정은 ZRAM이 사용하는 압축 알고리즘입니다. 기본적으로 LZO 또는 LZO-RLE를 사용하는데, 이는 CPU 부담이 적다는 장점이 있습니다. 하지만 최신 CPU에서는 더 새로운 ZSTD 알고리즘이 일반적으로 더 나은 압축률을 제공하며, 다소 높은 CPU 사용량도 체감되지 않습니다. PC가 10년 이내라면 구버전 LZO 계열 대신 ZSTD를 사용하는 것이 좋습니다.
zramctl 명령어로 현재 ZRAM이 사용 중인 알고리즘을 확인할 수 있습니다. 터미널에 zramctl을 입력하고 Enter 키를 누르면 ZRAM 스왑 정보가 표시됩니다.
zramctl은 대부분의 배포판에 기본 포함되어 있습니다. 만약 없다면 util-linux 패키지의 일부이므로 다음 명령어로 설치할 수 있습니다.
sudo apt install util-linux
ZRAM의 동작 방식을 조정하려면 메인 스크립트를 수정해야 합니다. 먼저 ZRAM이 사용하는 RAM 용량부터 변경해 보겠습니다.
ZRAM 크기 변경하기
ZRAM 설정을 변경하려면 bin 폴더에 있는 실행 스크립트를 편집해야 합니다. 터미널에 다음 명령어를 입력하세요.
sudo nano /usr/bin/init-zram-swapping
ZRAM이 사용하는 RAM 용량을 변경하려면 아래 줄을 수정합니다.
mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024 ))
이 줄은 간단한 계산식을 통해 ZRAM이 사용할 RAM 용량을 결정합니다.
totalmem: PC에 장착된 총 RAM 용량/2: totalmem을 2로 나누어 "전체 RAM의 절반"을 의미/ ${NRDEVICES}: 그 값을 PC의 코어 수로 나눔* 1024: 위 결과에 1024를 곱함
1번과 3번 항목은 변경해서는 안 되지만, 2번과 4번의 값을 조절하여 ZRAM이 사용하는 메모리 양을 조정할 수 있습니다.
/ 2를/ 4로 바꾸면 전체 RAM이 2가 아닌 4로 나뉘어, ZRAM이 절반이 아닌 4분의 1만 사용하게 됩니다. 전체 RAM을 ZRAM에 할당하는 것은 권장하지 않으므로, 이 값은/ 2로 두거나 ZRAM 사용량을 줄이고 싶을 때 값을 늘리는 것이 좋습니다.
- 마찬가지로
/ 2는 그대로 두고1024를512로 줄여도 같은 효과를 얻을 수 있는데, 각 디바이스에 할당되는 RAM이 절반으로 줄어들기 때문입니다. 반대로 ZRAM이 더 많은 RAM을 사용하게 하려면 이 값을1536으로 늘리면 됩니다.
ZRAM 압축 알고리즘 변경하기
압축 알고리즘도 같은 위치에서 변경할 수 있습니다.
먼저 현재 사용 중인 압축 알고리즘을 확인합니다.
cat /sys/block/zram0/comp_algorithm
고급 커스텀 ZRAM 구성에서는 여러 알고리즘을 혼합해서 사용할 수도 있지만, 기본값을 사용한다면 모든 ZRAM 파티션이 동일한 알고리즘을 사용합니다. 따라서 전부 확인할 필요 없이 위 명령어처럼 첫 번째 파티션만 확인하면 됩니다.
위 스크린샷에서 괄호 안에 표시된 것처럼 이미 ZSTD 알고리즘을 사용 중입니다. ZSTD는 압축률, 속도, 리소스 사용량 사이에서 현재 가장 균형 잡힌 선택으로 평가받으므로 그대로 두면 됩니다. 하지만 기본값을 사용 중이라면 LZO 또는 LZO-RLE가 활성화되어 있을 것입니다. 이를 변경하려면 앞서 편집했던 init-zram-swapping 실행 스크립트로 돌아가 아래 줄을 찾습니다.
echo $mem > /sys/block/zram${DEVNUMBER}/disksize
이 줄을 복사하여 바로 아래에 붙여넣어 동일한 명령어가 두 개 있도록 합니다. 원래 이 줄은 앞서 살펴본 계산 결과를 각 ZRAM 볼륨의 크기로 지정하는 역할을 하지만, 여기서는 압축 알고리즘을 정의하는 데 사용합니다.
- 첫 번째 줄 시작 부분의
$mem을zstd로 교체합니다. - 줄 끝의
disksize를comp_algorithm으로 교체합니다.
수정된 줄은 다음과 같아야 합니다.
echo zstd > /sys/block/zram${DEVNUMBER}/comp_algorithm
수정된 줄은 comp_algorithm 매개변수에 zstd 값을 입력하는 역할을 합니다.
다른 알고리즘을 사용하고 싶다면 위 명령어의 zstd를 해당 알고리즘 이름으로 바꾸면 됩니다.
파일을 저장하고 컴퓨터를 재시작한 후 결과를 확인하세요.
조정한 스왑이 실제로 사용되는 상황, 즉 시스템에 부하가 걸릴 때의 성능을 반드시 점검해야 합니다. 시스템이 버벅거리거나 끊긴다면 설정을 과하게 잡은 것이니 값을 낮춰야 합니다. 반대로 시스템이 잘 작동한다면 값을 조금 더 올려볼 수도 있습니다.
이제 우분투에서 ZRAM을 구성하는 방법을 알았으니, 더 강력한 PC를 만들 계획이라면 리눅스용 PC를 조립할 때 참고할 사항들도 함께 확인해 보세요.