본문 바로가기
Computer Science/Operating System

[OS] 스왑 메모리란?

by BenKangKang 2025. 6. 7.

 

– 시스템의 숨겨진 메모리 공간, 친구일까 적일까?

"메모리는 부족한데 시스템은 멈추지 않고 돌아간다?"
이럴 때 등장하는 비장의 카드가 바로 **스왑(Swap)**입니다.


📌 스왑 메모리란?

**스왑 메모리(Swap Memory)**는 RAM이 부족할 때 디스크 공간을 임시 메모리처럼 사용하는 영역입니다.

즉, 실제 물리 메모리가 꽉 찼을 때, 사용하지 않는 데이터를 디스크로 옮겨 RAM을 확보하는 방식입니다.
리눅스/유닉스 계열 시스템에서는 일반적으로 swap partition 또는 swap file을 만들어 사용합니다.


🔧 스왑 동작 방식 (간단히)

  1. RAM이 부족해짐
  2. 커널이 사용 빈도가 낮은 메모리 페이지를 Swap 공간으로 이동
  3. 필요한 경우 다시 디스크에서 RAM으로 재로딩

⚙️ 스왑의 종류

종류 설명

스왑 파티션 디스크에 별도의 영역으로 지정된 고정 공간
스왑 파일 기존 파일 시스템 위에 생성한 파일 기반 스왑 공간 (유연한 크기 조절 가능)

✅ 스왑 메모리의 장점

장점 설명

🛡 시스템 안정성 RAM이 부족할 때 갑작스러운 크래시를 막음
📈 처리 여유 확보 일시적인 고메모리 사용 처리 가능
💸 비용 절감 저용량 RAM 서버에서도 일시적 대체 가능

❌ 스왑 메모리의 단점

단점 설명

🐢 느린 속도 디스크는 RAM보다 수십~수백 배 느림 (특히 HDD)
🌀 시스템 지연 과도한 스왑 사용은 시스템을 심각하게 느리게 만듦 ("스왑 폭주" 현상)
🔧 성능 튜닝 필요 적절한 swappiness 값 조절 필수

📊 언제 스왑을 써야 할까?

상황 스왑 사용 판단

✅ 일시적인 고메모리 부하 YES
✅ 비중요 백그라운드 작업이 많음 YES
❌ 실시간성/저지연 서비스 운영 중 NO (성능 저하 위험)
❌ RAM을 충분히 확보 가능 NO (스왑 자체 비활성화 고려 가능)

⚙️ 실무 팁

✅ 스왑 확인 명령어

free -h

또는

swapon --show

✅ swappiness 설정

# 현재 swappiness 값 확인
cat /proc/sys/vm/swappiness

# 값을 10으로 낮춰서 RAM 우선 사용
sysctl vm.swappiness=10

기본값은 60입니다.
10~20은 RAM 우선,
80 이상은 스왑을 더 적극 사용하게 됩니다.


🚨 스왑이 과도하게 사용된다면?

  • RAM 증설 고려
  • 불필요한 프로세스 종료
  • 스왑 해제 후 재할당
# 스왑 해제
swapoff -a
# 다시 활성화
swapon -a

 

k8s 노드에서 스왑 메모리를 끄는 이유

성능 예측 불가능

# 스왑이 켜져있으면
Pod A: 2GB 메모리 요청 → 실제로는 1GB RAM + 1GB 스왑 사용
# 성능이 매우 느려질 수 있음

리소스 관리 혼란

  • 쿠버네티스: "이 Pod는 2GB 메모리 사용 중"
  • 실제 상황: 1GB는 디스크(스왑)에 있어서 엄청 느림
  • 스케줄러: 잘못된 정보로 Pod 배치 결정

QoS(Quality of Service) 보장 불가

# Guaranteed Pod (최고 우선순위)
resources:
  requests:
    memory: "1Gi"
  limits:
    memory: "1Gi"
  • 스왑이 있으면 "보장된" 성능이 보장되지 않음

OOM Killer 동작 방식

  • 스왑 OFF: 메모리 부족 시 명확한 OOM Kill
  • 스왑 ON: 시스템이 느려져서 문제 파악 어려움

컨테이너 격리 원칙

쿠버네티스는 "예측 가능한 성능"을 제공해야 하는데, 스왑은 이를 방해합니다.

요약: 스왑은 메모리 부족을 "숨기는" 기능이지만, 쿠버네티스는 메모리 부족을 "명확히 드러내서" 적절히 대응하길 원합니다.

 


🧠 마치며

스왑 메모리는 필요할 때 똑똑하게 쓰면 도움이 되지만,
무턱대고 쓰면 시스템의 발목을 잡는 요소가 됩니다.

"스왑은 보험이다. 없으면 불안하고, 과하면 해롭다."

적절한 설정과 모니터링을 통해, 스왑도 성능 튜닝의 중요한 무기가 될 수 있습니다.


🔗 추천 자료


필요하면 Markdown, Notion, 또는 블로그 플랫폼용 (브런치/티스토리) 포맷으로도 정리해드릴게요.

'Computer Science > Operating System' 카테고리의 다른 글

운영체제의 구조  (0) 2020.09.06
운영체제의 역사  (0) 2020.09.05
운영체제 개요  (0) 2020.09.05

댓글