리눅스 시스템에서 스왑(Swap) 은 메모리 관리의 중요한 역할을 합니다. 스왑은 시스템의 물리적 메모리(RAM)가 부족할 때 사용되는 디스크의 공간을 말하며, 일종의 가상 메모리로 작동합니다.
스왑을 사용하는 이유
- 메모리 부족 시 응용 프로그램 안정성 유지
물리적 RAM이 부족해지면 시스템은 더 이상 새로운 응용 프로그램을 실행할 수 없거나, 실행 중인 응용 프로그램이 충돌할 수 있습니다. 이때 스왑 영역을 사용하면 RAM을 대신하여 디스크 공간을 임시 메모리로 사용하여, 시스템이 응답하지 않거나 충돌하는 문제를 방지할 수 있습니다. - 비활성 메모리 이동
일부 프로그램은 메모리를 할당받은 후 오랫동안 그 메모리를 사용하지 않는 경우가 있습니다. 이러한 비활성 메모리를 스왑 공간으로 옮기면, 시스템은 활성 응용 프로그램에 더 많은 RAM을 할당할 수 있습니다. 이로 인해 메모리 자원을 효율적으로 활용할 수 있습니다. - 하이버네이션 지원
리눅스에서는 하이버네이션(hibernation) 기능을 지원하는데, 이는 시스템을 종료하지 않고 현재 상태를 디스크에 저장한 후 다시 켤 때 이전 상태를 복원하는 기능입니다. 이때 RAM의 모든 데이터를 스왑 공간에 저장하기 때문에, 하이버네이션을 사용하려면 스왑 공간이 필요합니다. - OOM(Out of Memory) 방지
시스템 메모리가 모두 사용되었을 때 스왑이 없다면, 리눅스 커널의 OOM(Out Of Memory) 관리자가 메모리를 회수하기 위해 임의로 프로세스를 종료할 수 있습니다. 스왑을 사용하면 이러한 상황에서 일부 프로세스를 스왑 공간으로 이동시켜 OOM 상황을 완화할 수 있습니다.
스왑의 단점
스왑은 디스크를 메모리처럼 사용하는 것이므로, 디스크 속도가 RAM보다 훨씬 느리기 때문에 성능 저하가 발생할 수 있습니다. 따라서 스왑은 일반적인 상황에서는 가능한 한 사용하지 않는 것이 좋으며, RAM이 충분할 경우 스왑 사용을 최소화하거나 필요 없을 수 있습니다.
스왑의 적절한 크기
스왑의 크기는 시스템의 사용 목적에 따라 다릅니다. 일반적으로 다음과 같은 권장 사항이 있습니다.
- RAM이 2GB 이하: RAM의 2배 크기의 스왑 권장
- RAM이 2GB 이상: RAM 크기와 동일한 스왑 크기 권장
- 하이버네이션 사용: RAM 크기보다 크거나 같은 스왑 필요
스왑 확인 및 관리
스왑 영역을 확인하려면 다음 명령을 사용합니다:
swapon --show
스왑 영역을 만들려면 fallocate 또는 dd 명령으로 스왑 파일을 만들 수 있습니다.
# 스왑 파일 생성
sudo fallocate -l 1G /swapfile
# 스왑 파일 권한 설정
sudo chmod 600 /swapfile
# 스왑 영역으로 지정
sudo mkswap /swapfile
# 스왑 활성화
sudo swapon /swapfile
# 부팅 시 자동으로 스왑 활성화 설정 ( /etc/fstab 파일에 추가)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
스왑은 RAM이 부족할 때 시스템 안정성을 유지하고, 비활성 데이터를 처리하며, 하이버네이션 기능을 지원하는 데 중요한 역할을 합니다. 다만 성능 저하가 있을 수 있으므로 RAM을 충분히 확보하는 것이 우선적이지만, 스왑은 중요한 안전 장치로 활용됩니다.
'OS > Etc' 카테고리의 다른 글
WSL(Windows Subsystem for Linux) 설치 (1) | 2024.09.17 |
---|