• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
가이드

Linux에서 Swap 메모리 추가하기.(Ubuntu 22)

달소 달소 414

3

5

 

안녕하세요. 달소입니다.

 

오랜만에 또 리눅스 관련 팁입니다 ㅎㅎ...

자의 반 타의 반.. 팰월드 서버를 구동하려고하는데 서버 메모리가 딸려서,, DarkAcid님 께서 권장해주신 Swap 메모리를 사용해서 문제없이 굴리는게 목표인지라 스왑을 최대한 상승시켜보겠습니다.

 

아래에서 GPT가 서술하듯,, 램과의 속도차이가 크기때문에 일단 디스크로 사용하면 성능저하가 좀 크실것이고 nvme 디스크라면 그나마 괜찮을듯합니다.

swap 메모리는 어떤건가요?

swap 메모리는 운영체제에서 사용되는 가상 메모리의 일부분입니다. 일반적으로 램(RAM)이 가득 차게 되면 운영체제는 사용하지 않는 메모리 페이지를 디스크의 스왑 공간에 저장합니다. 이렇게 저장된 페이지는 필요할 때 다시 메모리로 로드됩니다.

 

swap 메모리는 램의 부족한 용량을 보완하기 위해 사용됩니다. 램이 가득 차게 되면 운영체제는 더 이상 메모리를 할당할 수 없게 되는데, 이때 swap 메모리를 사용하여 일부 데이터를 디스크로 옮겨 놓음으로써 추가적인 메모리 공간을 확보합니다.

 

하지만 swap 메모리는 디스크에 접근하는 속도가 램에 비해 매우 느리기 때문에, swap 메모리를 사용하는 경우 성능 저하가 발생할 수 있습니다. 따라서 swap 메모리는 임시적인 해결책으로 사용되어야 하며, 램의 용량을 증가시키는 것이 더 효율적인 방법입니다.

 

현재 Swap 메모리 확인하기

확인하는 방법은 두가지가 있습니다.

free -h 를 이용한 확인과 swapon --show를 이용한 방법인데 후자가 더 상세히 볼수 있긴하지만 free -h 가 좀더 편합니다 ㅎ

image.png.jpg

 

저같은경우 서버의 메모리가 64G밖에 안되고 ZFS를 사용하고있기때문에 기본 메모리는 좀 짜게주고 Swap으로 nvme disk를 일부 사용하게끔 하고있습니다.

 

보통은 일반 램 용량의 2배정도(?) 할당하는걸로 알고있습니다.

 

스왑 메모리 추가하기

먼저 fallocate 명령어를 사용해서 스왑으로 사용할 2G 파일을 만들어주겠습니다.

그리고 권한을 600으로 만듭니다.

fallocate -l 2G /swap
chmod 600 /swap

 

image.png.jpg

 

이제 mkswap 명령어를 사용해서 이 파일을 스왑으로 만들고 swapon을 이용해서 swap으로 선언합니다.

 

mkswap /swap
swapon /swap

 

image.png.jpg

 

이 스왑의 경우 현재 시스템에서만 적용되며 재부팅 시에도 유지하기위해서는 /etc/fstab 파일을 수정해줘야합니다.

아래 명령어로 /etc/fstab 파일에 내용을 넣어주면 됩니다.

 

echo '/swap none swap sw 0 0' | sudo tee -a /etc/fstab

 

Swap 설정 조정

swap의 경우 설정만한다고 무조건 사용하는거 아닙니다.

위에 swapon의 list에서 보시다시피 우선순위도 있고 OS에서 데이터를 스왑하는 빈도가 기본적으로 구성되어있는데요.

swappiness가 바로 그 용도 입니다.

 

아래처럼 확인하고 조정하시면되겠습니다.

image.png.jpg

 

 

swappiness 는 어떻게 조정해야할까요?

swappiness는 리눅스 운영 체제에서 가상 메모리의 사용을 조절하는 매개 변수입니다. swappiness 값은 0에서 100 사이의 값을 가질 수 있으며, 기본값은 일반적으로 60입니다.

 

swappiness 값을 조정하는 방법은 다음과 같습니다:

 

1. 현재 swappiness 값을 확인합니다. 터미널에서 `sysctl vm.swappiness` 명령을 실행하면 현재 설정된 swappiness 값을 확인할 수 있습니다.

 

2. swappiness 값을 조정합니다. swappiness 값을 낮추면 시스템이 더 많은 물리적 메모리를 사용하려고 하고, 높이면 가상 메모리를 더 많이 사용하려고 합니다. 일반적으로 swappiness 값을 낮추는 것이 좋습니다.

 

- swappiness 값을 변경하려면 `sudo sysctl vm.swappiness=새로운_값` 명령을 사용합니다. 이렇게 하면 임시로 swappiness 값을 변경할 수 있습니다. 다시 부팅하면 기본값으로 돌아갑니다.

 

- swappiness 값을 영구적으로 변경하려면 `/etc/sysctl.conf` 파일을 편집하고 `vm.swappiness=새로운_값`을 추가합니다. 이렇게 하면 시스템이 부팅될 때마다 swappiness 값이 설정됩니다.

 

3. 변경된 swappiness 값을 적용합니다. 터미널에서 `sudo sysctl -p` 명령을 실행하면 변경된 swappiness 값을 즉시 적용할 수 있습니다.

 

swappiness 값을 조정할 때는 시스템의 메모리 사용량과 요구 사항을 고려해야 합니다. 일반적으로 메모리가 충분한 경우 swappiness 값을 낮추는 것이 좋습니다. 그러나 메모리가 부족한 경우 swappiness 값을 높여 가상 메모리를 더 많이 사용하도록 설정할 수 있습니다.

 

끝..!

신고공유스크랩
5

달소 달소
98Lv. 195799P
다음 레벨까지 221P


메인서버 - Ryzen 5700G / Proxmox 7.2 / Ubuntu / Xpenology / 기타 VM 등등
보조서버 - Intel i9-9900ES(QQC0) / H370M / Proxmox 7.1 / 아직개발용서버로 사용중
백업스토리지서버 - DS920+ 
하드웨어,가상화 등등 여러 IT분야에 관심이 두루두루많습니다만 깊게알고있는건 없습니다 하하하

1등
콜라 2024.01.27. 18:03
꽤 오래된 기술티지만..
zswap, zram(램디스크를 만들어서 swap으로 포맷/마운트)등이 았습니다.
압축률이 거의 두배가 되서 8기가면 16은 아니래도 10~ 12기가 처럼 쓸수 있어요.ㅎㅎ
콜라 2024.01.27. 23:17
달소
cpu가 남고 메모리가 턱없이 부족한 오라클 E2 필수예요.ㅎㅎ
fedora는 36인가 37부터 설치하면 기본으로 zram이 설정 되어있고, 수세는 커널 파라미터에 zswap.enabled=1 넣어주면 바로 가능합니다.

아마 zswap은 커널 모듈이라서 우분투도 zswap-enabled=1 넣어주면 바로 될거예요.
2등
나스사랑 2024.01.27. 21:33
우분투 서버에 부팅 하자마자 항상 아래와 같이 터미널에서 세팅해주곤 하는데 역시 달소님도 하고 계셨군요 ㅎㅎ
sudo apt update
sudo apt -y upgrade
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt-get -y install docker-compose
sudo timedatectl set-timezone Asia/Seoul
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
profile image
달소 글쓴이 2024.01.27. 23:02
나스사랑
핫,, 저같은경우 보통 OS 처음셋팅할때 Swap을 메모리 2배정도로 설정해주고있긴합니다 ㅎㅎ

좋은 스크립트네요!

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 제목 글쓴이 날짜 조회 추천
오픈소스 개인 구독 추적기 Wallos 7 달소 2일 전23:26 327 +2
/var/www 폴더가 삭제되었습니다. ㅜ,.ㅜ 2 니속사정 4일 전20:42 290 +1
jellyfin 자원 진짜 안쓰네요 1 kmw_ 4일 전19:26 446 +1
3712
image
달소 24.05.01.22:22 448 +3
3711
image
ljr10 24.05.01.08:20 197 0
3710
image
달소 24.05.01.06:46 238 +1
3709
image
달소 24.04.26.19:06 171 0
3708
image
달소 24.04.26.18:33 315 +1
3707
image
달소 24.04.26.18:09 402 0
3706
image
달소 24.04.26.17:40 346 +2
3705
image
달소 24.04.25.23:10 182 +1
3704
image
달소 24.04.25.22:54 145 0
3703
image
달소 24.04.25.07:24 422 0
3702
file
펜타네스트 24.04.15.18:39 337 +1
3701
image
달소 24.04.11.23:10 760 +3
3700
image
opq! 24.04.02.21:25 495 +9
3699
image
ExpBox 24.03.30.18:06 161 +3
3698
normal
DarkAcid 24.03.30.13:09 215 +1
3697
normal
minis 24.03.22.14:20 188 0
3696
image
달소 24.02.20.21:38 170 0
3695
image
달소 24.02.20.15:37 146 0
3694
image
달소 24.02.19.00:07 189 0
3693
image
달소 24.02.16.14:35 513 +2