Skip to content

Swap

Categories

Examples

Linux swap sapce

리눅스는 물리적 RAM (random access memory)을 페이지라고하는 메모리 덩어리로 나눕니다. 스와핑은 메모리 페이지를 하드 디스크의 스왑 공간이라고하는 미리 구성된 공간에 복사하여 해당 메모리 페이지를 비우는 프로세스입니다. 실제 메모리와 스왑 공간의 결합 된 크기는 사용 가능한 가상 메모리의 양입니다.

권고1. 메모리 2배

  • 일반적으로 메모리 크기의 약 2배 정도로 잡는다.
  • 단, 최소 256MB 이상으로 한다.

권고2. 레드햇 권고 (RHEL 6)

RAM 용량

스왑공간 권장량

하이버네이션 사용시 스왑공간 권장량

2 GB 미만

RAM의 2배

RAM의 3배

2 ~ 8 GB

RAM과 동일

RAM의 2배

8 ~ 64 GB

4 GB 이상

RAM의 1.5배

64 GB 초과

4 GB 이상

(하이버네이션 권장 안함)

  • 하이버네이션(Hibernation) 혹은 재우기는 시스템 전원을 끄기 전에 시스템 메모리에 있는 모든 내용을 하드 디스크와 같은 비휘발성 메모리에 기록하는 기능이다.

스왑파일 추가 스크립트 (간단ver)

아래 내용 보기 싫다면 간단히 아래 참조.

SWAPFILE_PATH=/swapfile2
fallocate -l 8GB "${SWAPFILE_PATH}"
chmod 600 "${SWAPFILE_PATH}"
mkswap "${SWAPFILE_PATH}"
swapon "${SWAPFILE_PATH}"
echo "${SWAPFILE_PATH}    none    swap    sw    0    0" >> /etc/fstab
swapon -s

스왑 파일 확인/생성/등록/해제/제거 방법

스왑 메모리 확인:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15418        6786        3986         161        4645        8149
Swap:          2047        1376         671

스왑 파일이 지정되어 있는지 확인:

$ swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file            2097148 1409048 -2

기존 스왑 파일(/swapfile)을 시스템과 연결 해제:

swapoff /swapfile

스왑 파일 제거:

rm /swapfile

만약 그냥 제거만 할거라면 /etc/fstab에 연결되어 있는 내용을 제거해라.

fallocate명령으로 빈 파일 생성:

root@your-13UD70P:/# fallocate -l 8GB /swapfile

스왑 파일은 시스템에서만 접근 가능하도록 권한 변경:

root@your-13UD70P:/# chmod 600 /swapfile

빈 파일을 스왑 파일로 포맷:

root@your-13UD70P:/# mkswap /swapfile
Setting up swapspace version 1, size = 7.5 GiB (7999995904 bytes)
no label, UUID=0ae793bf-7bb3-4a19-8de8-b7ce5b744c00

스왑 파일을 시스템에 연결:

swapon /swapfile

잘 연결되었나 확인:

root@your-13UD70P:/# swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file            7812496 0       -2

필요하다면 /etc/fstab에 등록:

/swapfile    none    swap    sw    0    0

스왑 메모리 초기화 방법

메모리가 넉넉해도 스왑 메모리를 사용할 수 있다. 이 때 사용된 스왑 메모리는 시스템 성능에 영향을 주므로 메모리를 해제하는 편이 좋다.

swapoff -a
swapon -a

스왑 메모리 사용 빈도 조절

만일 실제 메모리가 넉넉함에도 스왑 메모리를 자주 사용하는 경우 스왑 사용 빈도를 조절할 수 있다.

cat /proc/sys/vm/swappiness
60

0~100 사이의 값으로 사용 빈도 조절 가능.

다음과 같이 0으로 만들면 사용 안 한다는 의미:

echo 0 > /proc/sys/vm/swappiness

시스템 재부팅시 적용하고 싶다면 /etc/sysctl.conf 파일에 다음 내용 추가:

vm.swappiness = 0

프로세스별 Swap 메모리 사용량 확인 방법

  • htop에서는 F2 -> Columns 에서 M_SWAP 를 추가. (특정 버전은 이 Column이 없더라)
  • top에서는 f 를 누르고 SWAP 필드를 추가.
  • smem를 사용. 간단히 smem -t
  • grep Swap /proc/*/status 으로 직접 확인.
  • vmstat 사용 (시스템 전체 swap 사용량) vmstat -s | grep "used swap"
  • free 사용. (전체 swap 사용량) free -m

See also

Favorite site