스왑 메모리(Swap Memory)는 물리 RAM이 부족할 때 디스크 공간을 임시 메모리로 사용하는 기법이다. 가상 메모리 시스템의 일부로, 현재 사용되지 않는 메모리 페이지를 디스크로 내보내(swap out) 새로운 페이지를 올릴 공간을 만든다.
동작 원리
RAM (작음) 디스크 스왑 영역 (큼)
┌──────────┐ ┌──────────────────┐
│ Process A│ ←→ │ 비활성 페이지들 │
│ Process B│ │ (Swapped out) │
│ (활성) │ └──────────────────┘
└──────────┘
Page Fault 발생 시:
1. 필요한 페이지가 RAM에 없음 (Page Fault)
2. 비활성 페이지를 디스크로 swap out
3. 필요한 페이지를 디스크에서 RAM으로 swap in
Swap 설정 (Linux)
bash
# 스왑 파일 생성
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 스왑 사용량 확인
free -h
swapon --show
# /etc/fstab에 영구 등록
/swapfile none swap sw 0 0
vm.swappiness
스왑 사용 적극성을 0~100으로 조절하는 커널 파라미터.
| 값 | 의미 |
|---|
| 0 | 스왑 최대한 회피 |
| 10 | 서버 환경 권장 |
| 60 | Linux 기본값 |
| 100 | 적극적 스왑 사용 |
성능 영향
RAM 접근: ~100ns vs 스왑(SSD): ~100μs → 1000배 느림. 스왑이 과도하게 발생하는 스래싱(Thrashing) 상태에서는 시스템이 거의 멈춘다.
zswap / zram
RAM 내에 압축된 스왑 영역을 만들어 디스크 I/O 없이 더 많은 데이터를 저장. Android, ChromeOS에서 사용.
관련 개념
- •가상 메모리 — 스왑이 속하는 메모리 추상화
- •페이지 교체 알고리즘 — 어떤 페이지를 swap out할지 결정
- •캐시 메모리 — 반대로 빠른 임시 저장소
- •커널 — 스왑 관리를 담당하는 OS 핵심