IT관련

[Linux] 리눅스 스왑(Swap) 메커니즘 완벽 이해하기

파란하늘999 2026. 2. 5. 14:12

리눅스 서버를 운영하다 보면 RAM 용량이 부족해지는 순간이 옵니다. 이때 시스템이 멈추지 않고 계속 작동하게 해주는 '최후의 보루'가 바로 **스왑(Swap)**입니다.

 

오늘은 리눅스의 메모리 관리 핵심 기술인 스왑의 동작 원리와 메커니즘을 정리해 보겠습니다.


1. 스왑(Swap)이란 무엇인가?

스왑은 물리적 메모리(RAM)의 용량이 가득 찼을 때, 하드 디스크(HDD/SSD)의 일부 공간을 메모리처럼 사용하는 기술입니다.

  • 역할: RAM 확장 효과를 주어 시스템의 안정성을 높입니다.
  • 특징: 디스크를 사용하기 때문에 RAM보다 훨씬 느립니다. (I/O 속도 차이 발생)

2. 스왑의 핵심 동작 메커니즘

리눅스 커널은 페이징(Paging) 기법을 통해 메모리를 관리합니다. 스왑은 이 페이징 과정의 연장선에 있습니다.

① Swap-Out (Page-Out)

시스템에서 당장 사용하지 않는 메모리 블록(Page)을 RAM에서 디스크의 스왑 영역으로 옮기는 과정입니다. 주로 오랫동안 참조되지 않은 'Idel' 상태의 데이터가 대상이 됩니다.

② Swap-In (Page-In)

스왑 영역에 저장된 데이터를 프로세스가 다시 필요로 할 때, 해당 데이터를 디스크에서 읽어 다시 RAM으로 불러오는 과정입니다. 이때 발생하는 지연 시간을 Page Fault라고 합니다.


3. 커널은 언제 스왑을 사용할까? (Swappiness)

리눅스 커널은 무조건 RAM이 꽉 차야만 스왑을 쓰는 것이 아닙니다. 이를 조절하는 설정값이 바로 swappiness입니다.

  • 설정 범위: 0 ~ 100 (기본값은 보통 60)
  • 0에 가까울수록: 커널이 최대한 스왑을 피하고 RAM을 사용하려 합니다.
  • 100에 가까울수록: 커널이 적극적으로 스왑을 활용하여 파일 캐시 공간을 확보하려 합니다.

Tip: 성능이 중요한 데이터베이스 서버 등은 swappiness를 낮게(예: 10 이하) 설정하는 것이 일반적입니다.


4. 스왑의 두 가지 형태

리눅스에서는 스왑 영역을 두 가지 방식으로 설정할 수 있습니다.

구분 스왑 파티션 (Swap Partition) 스왑 파일 (Swap File)
특징 디스크의 별도 구역을 스왑 전용으로 할당 일반 파일 시스템 내에 생성된 파일
장점 속도가 약간 더 빠르고 구조가 단순함 용량 조절 및 생성이 유연함 (최신 권장)
단점 한 번 설정하면 크기 변경이 어려움 파일 시스템 오버헤드가 발생할 수 있음

5. 스왑 상태 확인 및 관리 명령어

터미널에서 현재 시스템의 스왑 상태를 확인하는 방법입니다.

# 1. 스왑 사용량 간단히 보기
free -m

# 2. 스왑 상세 정보 보기
swapon --show

# 3. swappiness 설정값 확인
cat /proc/sys/vm/swappiness

마무리하며

스왑은 시스템의 생명 연장을 위한 필수 요소이지만, 과도한 스왑 발생(Thrashing)은 서버 성능 저하의 주범이 됩니다.

 

따라서 적절한 swappiness 설정과 모니터링을 통해 최적의 상태를 유지하는 것이 중요합니다.

반응형