리눅스는 효율적인 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