728x90
반응형
Overview
Linux 스왑 메모리는 시스템의 물리적 RAM(Random Access Memory)이 완전히 활용될 때 사용되는 디스크 공간이다. 이는 RAM의 오버플로 영역 역할을 하여 실행 중인 모든 응용 프로그램과 프로세스를 수용하기에 사용 가능한 물리적 메모리가 부족한 경우에도 운영 체제가 계속 작동할 수 있도록 한다.
Swap 메모리란?
스왑 공간은 시스템의 메모리 용량을 확장하기 위해 예약된 스토리지 드라이브(예: SSD 또는 HDD)의 일부이다. 디스크 I/O 작업이 포함되므로 실제 RAM보다 느리지만 RAM이 과도하게 커밋되면 대체 기능을 제공한다.
Swap 작동방식
응용 프로그램이나 프로세스에 사용 가능한 RAM보다 더 많은 메모리가 필요한 경우 Linux는 비활성 메모리 페이지를 스왑 공간으로 이동한다. 이 프로세스를 페이징 또는 스왑 아웃이라고 한다. 스왑 아웃된 데이터가 다시 필요한 경우 RAM으로 다시 이동하고 필요한 경우 다른 데이터를 교체한다. 이를 스와핑 인이라고 한다.
Swap 유형
Swap 파티션
- 스왑 공간에만 사용되는 디스크의 전용 파티션이다. 일반적으로 파일 시스템 오버헤드를 방지하므로 더 효율적이다.
Swap 파일
- Swapping을 위해 할당된 기존 파일 시스템 내의 파일이다. 디스크를 다시 분할하지 않고도 크기를 조정하거나 관리하기가 더 쉽다.
Swap 메모리 확인
- `free -m`: 스왑을 포함하여 사용된 메모리와 사용 가능한 메모리를 표시
- `swapon -s`: 모든 활성 스왑 공간을 나열
- `cat /proc/meminfo`: 스왑을 포함한 자세한 메모리 통계를 제공
- `vmstat`: 메모리 및 스왑 사용 통계를 실시간으로 표시 top 또는
- `htop`: 스왑을 포함한 시스템 리소스 사용량에 대한 개요를 제공
Swap 설정
Swap 파일 생성
# swap 할당
sudo fallocate -l 2G /swapfile(2GB 스왑 파일).
# swap 권한 설정
sudo chmod 600 /swapfile
# swap 형식 설정
sudo mkswap /swapfile.
# swap 활성화
sudo swapon /swapfile.
# swap auto mount
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Swap 파티션 추가
- 스크립트 사용하여 자동화
#!/bin/bash
# Define variables
DISK="/dev/sdX"
PARTITION="${DISK}1"
# Create new partition using fdiskecho -e "n\\np\\n1\\n\\n\\nw" | sudo fdisk $DISK
# Set partition type to Linux swap
sudo fdisk $DISK <<EOF
t
1
82
w
EOF
# Format the partition as swap
sudo mkswap $PARTITION
# Enable swap
sudo swapon $PARTITION
# Add to /etc/fstab for persistenceecho "$PARTITION none swap sw 0 0" | sudo tee -a /etc/fstab
# Verify
sudo swapon --show
free -h
Swapiness
Swapiness는 시스템이 스왑을 얼마나 적극적으로 사용하는지 제어하는 커널 매개변수이다. 값 범위는 0~100이다.
- 0: 꼭 필요한 경우가 아니면 교체를 피한다.
- 100: 공격적으로 교체
sudo sysctl vm.swappiness=10
- 영구적으로 하려면 `/etc/sysctl.conf` 에 `vm.swappiness=10` 을 추가한다.
Swap의 이점
- 메모리 부족(OOM) 오류 방지: RAM이 소진되었을 때 안전망을 제공한다.
- 최대 절전 모드 지원: 최대 절전 모드 동안 공간을 교환하기 위해 전체 시스템 상태를 저장한다.
- 안정성 향상: 메모리가 과도하게 사용되는 경우 중요한 프로세스가 종료되지 않도록 한다.
Swap의 단점
- 느린 성능: 디스크 기반 스토리지는 RAM보다 훨씬 느리므로 스왑을 많이 사용할 경우 시스템 성능이 저하된다.
- SSD : 스왑 쓰기를 자주 수행하면 SSD의 수명이 단축될 수 있다.
- 대기 시간: 스왑에서 데이터에 액세스하면 RAM에 비해 추가 대기 시간이 발생한다.
Reference
728x90
반응형
'Linux' 카테고리의 다른 글
리눅스 커널이란?(Linux Kernel) (2) | 2024.11.12 |
---|---|
Vim 개념 및 사용가이드 (0) | 2024.05.14 |
리눅스 명령어 3. sed, awk란? (0) | 2024.01.20 |
리눅스 명령어 2. jq란? (2) | 2024.01.19 |
리눅스 명령어 1. xargs란? (0) | 2024.01.16 |