리눅스 스왑 메모리 (Swap Memory) 완벽 가이드
1. 스왑 메모리란?
스왑 메모리는 RAM(물리 메모리)이 부족할 때를 대비해 하드 디스크(HDD/SSD)의 일부를 마치 RAM처럼 사용하는 기술입니다.
쉽게 비유하자면 다음과 같습니다:
- RAM: 작업을 하고 있는 책상 (빠르지만 공간이 한정적)
- HDD/SSD: 책이 꽂혀 있는 책장 (느리지만 공간이 넓음)
- Swap: 책상이 꽉 찼을 때, 잠시 안 보는 책을 올려두는 보조 테이블
2. 왜 필요한가?
최근에는 RAM 가격이 싸져서 스왑이 필요 없다고 생각할 수 있지만, 서버 운영 환경에서는 여전히 필수적입니다.
① OOM (Out Of Memory) 방지 (가장 중요)
리눅스 커널은 RAM이 100% 가득 차면, 시스템을 살리기 위해 메모리를 많이 쓰는 프로세스를 강제로 죽입니다. 이를 OOM Killer라고 합니다.
- 스왑이 없으면: 트래픽이 몰릴 때 웹 서버나 DB가 예고 없이 즉사합니다.
- 스왑이 있으면: 느려질지언정 죽지는 않고 버티며 관리자가 대응할 시간을 벌어줍니다.
② 메모리 효율화
운영체제는 자주 쓰지 않는 데이터(예: 부팅할 때만 썼던 데몬)를 스왑으로 옮기고(Swap-out), 비워진 실제 RAM을 활발한 프로세스나 파일 캐싱에 사용하여 전체적인 성능을 높입니다.
3. 작동 원리
- Swap Out: RAM에 있는 데이터 중 오랫동안 사용되지 않은 데이터를 디스크(스왑 영역)로 옮깁니다.
- Swap In: 스왑 영역에 있던 데이터가 다시 필요해지면 RAM으로 불러옵니다.
주의: 디스크는 RAM보다 속도가 수십만 배 느립니다. 스왑을 너무 자주 사용하면 시스템 전체 속도가 급격히 느려지는 Thrashing(스래싱) 현상이 발생할 수 있습니다.
4. 스왑 용량 권장량
과거에는 "RAM의 2배"가 공식이었으나, 최신 시스템에서는 다릅니다.
| 실제 RAM 용량 | 권장 스왑 용량 | 비고 |
|---|---|---|
| 2GB 이하 | RAM 용량의 2배 | 메모리가 절대적으로 부족한 환경 |
| 2GB ~ 8GB | RAM 용량과 동일 | 일반적인 웹 서버 세팅 |
| 8GB ~ 64GB | 4GB ~ 8GB | 최소한의 안전장치만 마련 |
| 64GB 이상 | 4GB 이상 | 최대 절전 모드(Hibernation) 사용 시 추가 필요 |
5. 핵심 명령어 모음 (Cheat Sheet)
상태 확인
# 메모리와 스왑 상태를 사람이 보기 좋게 출력
free -h
# 스왑 파일/파티션 상세 정보 확인
swapon --show