김 컴퓨터


리눅스 스왑 메모리 (Swap Memory) 완벽 가이드

1. 스왑 메모리란?

스왑 메모리는 RAM(물리 메모리)이 부족할 때를 대비해 하드 디스크(HDD/SSD)의 일부를 마치 RAM처럼 사용하는 기술입니다.

쉽게 비유하자면 다음과 같습니다:

2. 왜 필요한가?

최근에는 RAM 가격이 싸져서 스왑이 필요 없다고 생각할 수 있지만, 서버 운영 환경에서는 여전히 필수적입니다.

① OOM (Out Of Memory) 방지 (가장 중요)

리눅스 커널은 RAM이 100% 가득 차면, 시스템을 살리기 위해 메모리를 많이 쓰는 프로세스를 강제로 죽입니다. 이를 OOM Killer라고 합니다.

② 메모리 효율화

운영체제는 자주 쓰지 않는 데이터(예: 부팅할 때만 썼던 데몬)를 스왑으로 옮기고(Swap-out), 비워진 실제 RAM을 활발한 프로세스나 파일 캐싱에 사용하여 전체적인 성능을 높입니다.


3. 작동 원리

  1. Swap Out: RAM에 있는 데이터 중 오랫동안 사용되지 않은 데이터를 디스크(스왑 영역)로 옮깁니다.
  2. 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