Linux PC의 낮은 RAM에서 성능을 개선하기 위한 Zswap 사용법

솔직히 말해서, 우리 중 일부는 그렇게 자주 업그레이드를 하지 않습니다. 또는 적어도 리눅스 사용자는 구형 노트북/컴퓨터를 재활용하는 것을 좋아합니다. 많은 배포판이 적은 RAM(랜덤 접근 메모리)을 가진 시스템에서 원활하게 실행됩니다. 하지만 웹 브라우저는 인터넷이 발전할수록 더 많은 메모리를 요구하므로 그렇게 관대하지 않습니다.
LXDE 데스크탑 환경을 가진 시스템은 부팅 후 150MB의 RAM만 필요할 수 있지만, Chromium, Chrome 또는 Firefox는 몇 개의 탭을 열면 수백 메가바이트, 심지어 수 기가바이트의 RAM을 빠르게 소모합니다.
그때 문제가 발생합니다! 하드 디스크가 그르렁 거리는 소리를 내기 시작합니다. 음악이 끊깁니다. 다른 애플리케이션으로 전환할 때 화면에 나타나는 데 몇 초가 걸립니다. 심지어 마우스 커서도 지연될 수 있습니다. 이것이 디스크 스레싱의 효과입니다.
디스크 스레싱이란 무엇인가요?
먼저, 스왑을 이해해야 합니다. 자유 RAM이 부족할 때, 운영 체제가 오랫동안 접근하지 않은 애플리케이션 데이터가 스왑 영역으로 이동됩니다. 이는 종종 물리적 저장 장치에 있습니다. 이렇게 하면 운영 체제가 현재 프로그램에서 필요로 하는 메모리 공간을 확보할 수 있습니다. 따라서 지난 한 시간 동안 접근하지 않은 브라우저 탭이 하드 디스크로 스왑될 수 있습니다. 이제 GIMP 이미지 편집기를 실행할 수 있습니다. 그것을 닫고 이전 탭으로 전환할 때, 운영 체제가 다시 메모리로 스왑합니다(디스크에서 읽어와 RAM으로 복사).

이 메커니즘은 소량의 데이터를 스왑할 때 잘 작동합니다. 하지만 예를 들어, 사용 가능한 RAM이 2GB뿐이고 열려 있는 모든 프로그램이 4GB를 필요로 하면, 운영 체제는 계속 스왑을 해야 합니다. 메모리에서 디스크로, 디스크에서 메모리로, 그리고 다시 계속해서 데이터를 이동하는 것은 매우 느립니다. 특히 하드 디스크에서는 더 그렇습니다. 이러한 상황에서는 저장 장치가 요청을 충분히 빠르게 처리할 수 없습니다. 요약하자면, 디스크 스레싱이 발생하면 모든 것이 매우 느려집니다.
SSD 드라이브는 스왑에 탁월하다
인터넷에 여전히 떠도는 신화가 있습니다: “절대 SSD에 스왑을 설정하지 마세요. 기기를 망칠 것입니다!” 몇 년 전에는 사실이었지만, 이제는 그렇지 않습니다. 실제로 SSD 드라이브에 스왑을 설정하는 것은 훌륭한 결과를 가져옵니다. 컴퓨터에 좋은 랜덤 읽기/쓰기 성능(최소 300MB)을 가진 SSD 장치가 포함되어 있다면, 그 위에 스왑 파티션을 설정하고 이 기사를 무시하세요. 운영 체제가 1GB의 데이터를 스왑해야 할 때, 하드 디스크에서는 1분 이상 걸리는 반면 SSD에서는 5초가 채 걸리지 않습니다.
리눅스에서 디스크 스레싱을 크게 줄이는 방법

다행히도 RAM에 저장된 대부분의 데이터는 매우 압축 가능하다는 것입니다. 이는 메모리에 저장된 200MB의 데이터를 압축하면 100MB로 줄일 수 있다는 것을 의미합니다. 결과적으로, 스왑할 때 운영 체제가 디스크에 훨씬 적은 데이터를 기록해야 한다는 뜻입니다.
프로그램으로 전환하는 데 30초를 기다리는 대신 15초를 기다린다고 상상해 보세요. 이는 명백한 개선입니다. 하지만 실제로는 더 상당한 속도 개선이 있을 수 있습니다(10초도 채 안 될 수 있음) 왜냐하면 우리가 사용할 도구는 그렇게 정교하기 때문입니다. 이 도구는 압축할 수 없는 조각들만을 지능적으로 디스크로 전송하고, 나머지는 메모리의 예약된 부분에 보관합니다. 내부 작동에 대해 더 읽고 싶다면, zswap에 대한 공식 리눅스 커널 페이지를 확인해 보세요.
zswap을 사용하여 얻는 이점을 간단히 요약하면, 메모리가 부족할 때 끔찍한 느림 대신 몇 초 동안 지속되는 경미하고 일시적인 지연을 겪게 됩니다(수 분이 아니라).
Debian 기반 배포판에서 zswap 활성화 방법 (Ubuntu, Linux Mint 등)
터미널 애플리케이션을 열고 다음 명령어를 실행하여 Grub 부트로더 템플릿 구성 파일을 편집합니다:
sudoedit /etc/default/grub커서 키를 사용하여 “GRUB_CMDLINE_LINUX_DEFAULT”로 시작하는 줄로 이동합니다. 따옴표 안에 다음 텍스트를 추가합니다:
zswap.enabled=1
예를 들어, GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"가 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1"로 변경됩니다.
파일을 저장하려면 Ctrl + X를 누른 다음 “y”와 Enter를 누릅니다.
이전에 편집한 템플릿에 따라 새로운 Grub 구성 파일을 생성합니다:
sudo update-grub
재부팅하면 zswap 모듈이 자동으로 활성화됩니다.
Fedora 및 OpenSUSE에서 zswap 활성화 방법
여기서는 이전 섹션과 유사한 절차를 따르지만 약간의 변형이 있습니다. Grub 템플릿 구성 파일을 편집합니다.
sudoedit /etc/default/grubGRUB_CMDLINE_LINUX로 시작하는 줄의 따옴표 안에 zswap.enabled=1을 추가합니다.

Ctrl + X를 누른 다음 “y”와 Enter를 눌러 파일을 저장합니다.
컴퓨터가 BIOS 또는 UEFI 시스템에서 부팅되는지에 따라 Grub 구성 파일이 다른 경로에 생성됩니다. 현재 파일을 찾으려면 다음 명령어를 입력합니다:
sudofind/boot/-name grub.cfg
여기서 출력된 경로를 다음 명령어에서 사용합니다. 예를 들어, 우리 사례에서는 “boot/grub2/grub.cfg” 경로를 발견했으므로, 다음 명령어의 “-o” 다음에 추가합니다:
sudo grub2-mkconfig -o/boot/grub2/grub.cfg컴퓨터를 재부팅합니다. 재부팅 후 모듈이 활성화되어 있는지 확인합니다:
cat/sys/module/zswap/parameters/enabled출력이 “Y”라면, 모듈이 제대로 작동하고 있는 것입니다.
Arch Linux에서 zswap 활성화 방법
systemd-swap 패키지를 설치합니다:
sudo pacman -Sy systemd-swap
부팅 시 이 패키지가 작동하도록 설정합니다:
sudo systemctl enable systemd-swap재부팅 없이 지금 바로 시작합니다:
sudo systemctl start systemd-swap모든 것이 예상대로 작동했는지 확인하려면 zswap 모듈이 활성화되어 있는지 확인합니다:
cat/sys/module/zswap/parameters/enabled
출력이 “Y”라면, 모듈이 활성화되어 있다는 의미입니다.
다른 배포판에서 zswap 활성화 방법
일반적으로 부팅 시 zswap을 활성화하는 것은 커널 매개변수에 zswap.enabled=1을 추가하는 만큼 쉽습니다. 대부분의 배포판은 기본적으로 Grub2를 부트로더로 사용합니다. 다른 부트로더를 사용하는 경우, 부팅 시 전달할 커널 매개변수가 저장된 구성 파일을 찾아 zswap.enabled=1을 추가 매개변수로 추가합니다.
특정 사용 사례에 따라 성능이 개선되는지 확인하기 위해 조정할 수 있는 또 다른 매개변수는 zswap.max_pool_percent=20입니다. 끝에 있는 숫자를 변경하여 조정할 수 있습니다: 예를 들어 zswap.max_pool_percent=50입니다.
이를 zswap.enabled=1을 추가하는 동일한 커널 매개변수에 추가하십시오. 50%를 초과하지 않는 것이 좋습니다. 더 많은 비율은 낮은 RAM 시스템에 악영향을 미칠 수 있습니다.
결론
구형 시스템에서 RAM이 자주 부족해지고 디스크 스레싱의 짜증 나는 효과를 경험했다면, 이제부터는 차이를 즉시 느끼고 감사할 수 있습니다. 끔찍한 느림 대신, 데이터가 디스크로 스왑될 때 수 분이 아니라 몇 초 동안 지속되는 경미하고 일시적인 지연을 경험할 것입니다. 이전에는 컴퓨터를 사용할 수 없는 상황에서도 작업을 계속할 수 있습니다.