리눅스에서 RAM과 CPU 사용량 줄이는 방법
(tecmint.com)리눅스는 효율적인 OS이지만 RAM과 CPU 과다 사용은 성능 저하와 시스템 불안을 야기할 수 있다.
이 글에서는 모니터링 도구, 프로세스 관리, 커널 조정 등 실질적인 최적화 방법을 설명한다.
1. 리소스를 많이 사용하는 프로세스 찾기
top
, htop
, ps
명령어를 사용해 CPU 및 메모리 사용량이 높은 프로세스를 확인한다.
PID를 기억해 후속 조치에 활용한다.
# top
top # P: CPU 정렬, M: 메모리 정렬
# htop 설치 및 실행
sudo apt install htop
htop # F6: 정렬, F9: 종료
# ps 명령어
ps aux --sort=-%mem | head
ps aux --sort=-%cpu | head
2. 불필요한 프로세스 종료
kill
, kill -9
, pkill
명령어로 리소스를 과다 사용하는 프로세스를 종료할 수 있다.
응답 없는 프로세스는 강제 종료하거나 이름으로 일괄 종료한다.
kill PID
kill -9 PID
pkill process_name
3. 자동 시작 프로그램 최적화
systemctl
로 부팅 시 자동 실행되는 서비스를 확인하고 불필요한 항목은 비활성화한다.
GUI 환경에서는 시작 응용 프로그램 관리자를 사용할 수 있다.
systemctl list-unit-files --type=service | grep enabled
sudo systemctl disable 서비스이름
4. 스와피니스 조절
스와피니스(swappiness)는 스왑 메모리 사용 빈도를 조절하는 설정이다.
기본값 60에서 10으로 낮추면 RAM 활용이 우선시되어 성능 향상에 도움이 된다.
cat /proc/sys/vm/swappiness
sudo nano /etc/sysctl.conf # vm.swappiness=10 추가
sudo sysctl -p
5. 경량화된 데스크탑 환경 사용
GNOME, KDE 대신 XFCE, LXDE, MATE 같은 가벼운 데스크탑 환경을 사용하면 리소스 절약이 가능하다.
앱도 마찬가지로 가벼운 에디터, 브라우저, 파일 관리자로 대체할 수 있다.
6. 캐시 및 버퍼 수동 정리
리눅스는 성능 향상을 위해 RAM을 캐시로 사용하지만 필요 시 수동 정리도 가능하다.
다만 일시적 성능 저하가 있을 수 있으므로 주의가 필요하다.
sudo sync; sudo sysctl -w vm.drop_caches=3
7. 커널 파라미터 최적화
디스크 쓰기 빈도나 RAM 최소 확보량 등의 커널 파라미터를 수정해 자원 관리를 효율화할 수 있다.
# /etc/sysctl.conf 내 추가 항목 예시
vm.dirty_background_ratio=5
vm.dirty_ratio=10
vm.min_free_kbytes=65536
kernel.sched_autogroup_enabled=0
8. ZRAM 사용
ZRAM은 메모리를 압축해 사용하는 기능으로 RAM 절약에 효과적이다.
Zswap도 함께 설정하면 압축 기반 스왑이 활성화된다.
sudo apt install zram-config
sudo systemctl start zram-config
# GRUB 설정 추가
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=1"
sudo update-grub
sudo reboot
9. 프로세스 CPU 사용률 제한
cpulimit
명령어를 통해 특정 프로세스의 CPU 사용률을 제한할 수 있다.
systemd
설정을 이용해 영구 제한도 가능하다.
sudo apt install cpulimit
sudo cpulimit -e firefox -l 30 # firefox를 30%로 제한
# systemd로 설정
sudo systemctl set-property 서비스이름 CPUQuota=30%
10. 시스템 정기 업데이트
최신 업데이트는 성능 개선과 버그 수정에 도움이 되므로 정기적으로 수행해야 한다.
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # RHEL/CentOS
Asahi Linux 에서는 zswap을 쓰고 zram을 비활성화 합니다
https://web.archive.org/web/20241126234212/…
https://social.treehouse.systems/@AsahiLinux/113532720695827142
zram의 경우 처음 알았는데 어떤 단점이 있을까 싶어서 qwq:32b에 물어봤습니다
왜 Linux 배포판이 기본적으로 zram을 활성화하지 않을까?
현대 시스템의 메모리 부족 문제가 줄어들었기 때문: 현재 대부분의 PC는 4GB 이상의 RAM을 기본으로 탑재합니다. 메모리 부족 문제가 적은 환경에서는 zram의 필요성이 낮습니다.
CPU 부하 리스크: zram은 CPU 사용량을 증가시킬 수 있으므로, 모든 하드웨어에 안전하지 않습니다.
배포판은 "일반적인 환경"을 우선시하므로, zram의 CPU 오버헤드를 감수할 가치가 있다고 보기 어려울 수 있습니다.
스왑의 기본 사용 방식 변화: SSD의 보급으로 전통적인 스왑 디스크의 속도가 크게 향상되었습니다.
zram의 속도 장점이 과거보다 상대적으로 덜 두드러집니다.
사용자 환경의 다양성: zram은 특정 환경(예: 저사양 장치) 에서만 효과적이며, 일반 사용자에게는 별다른 이점이 없습니다.
배포판은 "최소 설정으로 최대 호환성"을 추구하므로, zram을 기본 활성화하지 않습니다.
설정의 복잡성: zram의 크기, 압축 알고리즘 등을 수동으로 조정해야 최적화되며, 일반 사용자가 이를 이해하는 데 어려움이 있습니다.
mac os에서도 메모리 압축은 적극적으로 사용되고 있습니다.
왜 Linux 배포판이 기본적으로 zram을 활성화하지 않을까?
페도라 33, 오픈수세는 Aeon부터 ZRAM을 기본적으로 활성화 합니다.
항상 벤치마크가 먼저지만, 생각보다는 쓸만할 수 있습니다.
zswap 쓸만합니다. macos에서는 유사한 기능이 기본 활성화 옵션이기도 하고요. 랩탑같이 제한적인 리소스 환경에서 브라우저 띄우거나 앱을 많이 띄우는 경우 잘 동작합니다. 다만 언급하신 것처럼 CPU 트레이드 오프가 있어서 배터리에는 영향을 주겠네요.
zram이랑 zswap이랑 다른 건가요?
sudo apt install zram-tools
systemctl enable zramswap
이렇게 해서 쓰는데 zswap이라는게 이거인지 모르겠네요..
기술 이름이 상당히 헷갈립니다. zram은 커널 기능으로, 자동 압축 기능을 가진 블럭 디바이스, 그러니까 일종의 스토리지를 만들어주는 기능을 합니다. 그리고 그 스토리지 위에 우리가 아는 일반적인 swap 파일을 생성하고 사용하면, 그게 일종의 RAM-based swap + compression 기능을 갖추게 되는거죠. zramswap 서비스가 그런 역할을 해주는 것처럼 보이네요. 그런데, 추후에 이 사례가 유용하다고 생각이 되어서, zram+swap이 통째로 커널 기능으로 통합됩니다. 그 zswap입니다. zswap은 대다수의 리눅스에서 별도 설치 없이 명령어만으로 활성화 할 수 있습니다. (참조 https://wiki.archlinux.org/title/Zswap)