반응형
SWAP

스왑은 Linux 기반 운영 체제에서 가상 메모리로 작동하는 저장 장치(예: HHD, SSD, 가상 저장 장치)의 전용 공간이다. 시스템의 사용 가능한 메모리가 부족할 때 물리적 RAM(Random Access Memory)을 보충하는 데 사용된다. 스왑 공간을 통해 운영 체제는 덜 자주 사용되는 데이터를 RAM에서 스왑 영역으로 이동하여 더 중요하거나 자주 액세스하는 데이터를 위해 RAM의 공간을 확보할 수 있다.

스왑 공간은 스왑 파티션 또는 스왑 파일의 형태일 수 있다. 스왑 파티션은 저장 장치의 전용 파티션인 반면 스왑 파일은 기존 파일 시스템 내의 파일이다. 둘 다 동일한 목적을 수행한다.


SWAP 장점
  • 메모리 부족 상황
    시스템의 RAM이 부족할 때 스왑 공간은 덜 중요한 데이터를 일시적으로 저장하여 더 중요한 데이터를 실제 메모리에 남길 수 있다.

  • 최대 절전 모드
    최대 절전 모드에서 시스템은 RAM의 전체 내용을 스왑 공간에 저장한 다음 전원을 끈다. 시스템이 다시 켜지면 스왑 공간의 내용이 RAM으로 복원되고 시스템은 이전 상태를 재개한다.

스왑 공간의 개념

스왑 공간은 Linux 커널 메모리 관리 하위 시스템에서 제어하는 디스크 영역이다. 커널은 메모리에 비활성 페이지를 보관하여 시스템 RAM을 보완하기 위해 스왑 공간을 사용한다. 시스템의 가상 메모리에는 결합된 시스템 RAM과 스왑 공간이 포함된다.

 

시스템의 메모리 사용량이 정의된 한도를 초과할 경우 커널은 RAM에서 프로세스에 할당된 유휴 메모리 페이 지를 검색한다. 커널은 유휴 페이지를 스왑 영역에 쓰고 RAM 페이지를 다른 프로세스에 다시 할당한다. 프로그램에서 디스크의 페이지에 액세스해야 하는 경우 커널은 메모리의 다른 유휴 페이지를 찾아 디스크에 쓴 다음 스왑 영역에서 필요한 페이지를 불러온다.

 

스왑 영역이 디스크에 상주하므로 스왑은 RAM에 비해 속도가 느리다. 스왑 공간은 시스템 RAM을 늘리는 데 사용되지만, 워크로드에 비해 RAM이 부족한 경우 스왑 공간을 지속 가능한 해결책으로 간주해서는 안 되며, 물리적 메모리를 늘리는 것이 좋다.


스왑 공간 계산

관리자는 시스템의 메모리 워크로드에 따라 스왑 공간의 크기를 조정해야 한다. 애플리케이션 벤더가 스왑 공간 계산에 대한 권장 사항을 제공하는 경우도 있다. 다음 표에는 실제 메모리 총량에 따른 지침이 나와 있다.

RAM SWAP 공간 최대 절전 모드 시 SWAP 공간
2GB 이하 RAM * 2 RAM * 3
2~8 GB RAM과 동일 RAM * 2
8~64GB 4GB 이상 RAM * 1.5
64GB 이상 4GB 이상 권장되지 않음

랩탑 및 데스크탑 최대 절전 모드 기능은 시스템의 전원을 끄기 전에 스왑 공간을 사용하여 RAM 내용을 저장 한다. 시스템을 다시 켜면 커널이 스왑 공간에서 RAM 내용을 복원하므로 완전한 부팅이 필요하지 않다. 해당 시스템의 경우 스왑 공간이 RAM 크기보다 커야 한다.

 

해당 권장 사항은 말 그대로 권장 사항이므로 이렇게 꼭 맞춰서 할 필요는 없다.


스왑 관련 명령어

스왑 공간 활성화 명령어를 시행하기 전에 다음 단계를 수행해야 한다.

 

• 파일 시스템 유형이 linux-swap인 파티션을 생성한다. (parted, fdisk 등 명령어 사용)

• 장치에서 스왑 시그니처를 저장한다. (mkswap 사용)

 

1. SWAP 활설화

sudo swapon /dev/sda5

 

2.  SWAP 비활성화

sudo swapoff /dev/sda5

 

3. 장치 또는 파일에 스왑 영역을 설정

sudo mkswap /dev/sda5


4. 현재 활성화된 스왑 공간을 표시한다.

swapon --show


5. 시스템에서 사용 가능한 물리적 메모리와 스왑 메모리의 총량을 표시

free -h

이 예는 사람이 읽을 수 있는 형식(예: MB, GB)의 메모리 및 스왑 사용량을 보여준다.


6. 지정된 크기로 미리 할당된 스왑 파일 생성

sudo fallocate -l 2G /swapfile

이 예에서는 /swapfile이라는 2GB 스왑 파일을 만든다.

 

7. dd: 이 명령은 지정된 입력 파일을 복사하고 변환하여 스왑 파일을 만들 수도 있다.

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

이 예는 /dev/zero에서 데이터를 복사하여 /swapfile이라는 이름의 2GB 스왑 파일을 생성한다.


8. 스왑 파일의 권한을 변경

sudo chmod 600 /swapfile

이 예제는 /swapfile의 권한을 루트 사용자만 읽고 쓸 수 있도록 설정한다.


9. 시스템이 스왑 공간을 얼마나 적극적으로 사용하는지 결정하는 swappiness 값과 같은 런타임 시 커널 매개변수 구성

sudo sysctl vm.swappiness=10

이 예에서는 swappiness 값을 10으로 설정한다. 즉, 시스템이 덜 적극적으로 스왑 공간을 사용한다.


스왑 공간으로 작업할 때 원하는 결과를 얻으려면 위 예시에서 설명한 명령어들 중 일부를 조합하여 사용해야 할 수도 있다.

반응형