클라우드 서버들은 신기하게 스왑 공간이 0으로 설정돼 있습니다.
스왑 공간은 메모리가 다 찼을 때 임시로 사용할 수 있는 파일 시스템 공간입니다.
스왑은 기본적으로 사용하지 않을 수 있다면 사용하지 않는 게 성능상은 가장 좋습니다. 메모리를 늘리는 게 답이죠. 스왑 공간은 메모리가 아니라 저장공간이기 때문에 많이 느립니다. SSD 덕에 요즘은 스왑 공간도 나름 빨라졌다고 하지만 그래도 RAM의 성능을 따라갈 수는 없습니다.
스왑 사용 여부는 어떻게 정해야 할까요? 서버가 메모리 부족으로 죽어도 빠른 게 안정적인 것보다 더 중요하다면(아마 서버를 여러 대 굴리고 있으면 그렇겠죠) 스왑 공간을 굳이 설정할 필요가 없습니다.
하지만 서버가 잠깐 느려지더라도 죽는 것은 무조건 방지해야 한다면 스왑 공간을 설정해 주는 것이 좋을 것입니다. 비용 대비 서버 증설의 효용성이 적을 때 이렇게 하는 게 좋을 겁니다.
스왑 공간은 얼마나 할당하는 게 좋을까요? 레드햇 리눅스에 따르면 아래와 같습니다.
설치된 RAM 용량 | 권장되는 스왑 용량 | 최대절전을 허용할때 권장되는 스왑용량 |
---|---|---|
2GB or less | RAM 용량의 2배 | RAM 용량의 3배 |
> 2GB – 8GB | RAM 용량 | RAM 용량의 2배 |
> 8GB – 64GB | 적어도 4GB ~ RAM 용량의 1 / 2 배 | RAM 용량의 1.5배 |
> 64GB or more | 적어도 4GB | 최대절전이 권장되지 않음 |
주의: 140개 이상의 논리적인 프로세서를 가진 시스템 혹은 3TB 이상의 RAM을 가진 시스템에서는 최소 100GB의 스왑 공간이 권장됩니다.
아래 명령어에는 2G로 돼 있는데, 제 서버가 1G기 때문입니다.
아래 명령어로 설정합니다. 2G는 자신에 맞게 수정해야 합니다.
# 스왑용 파일 생성
sudo fallocate -l 2G /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 > /dev/null
# 스왑 설정 확인
sudo swapon --show
댓글 남기기