본문 바로가기

리눅스

[draft] 우분투에서 스왑 메모리를 설정하는 방법

728x90

우분투(ubuntu 22.04)에서 스왑 메모리(swap memory)를 설정하는 방법

Ubuntu 22.04에서는 기본적으로 스왑 파일을 자동으로 생성하도록 설정되어 있습니다. 그러나 기본 스왑 파일 크기는 일반적으로 시스템의 물리적 메모리 크기에 따라 자동으로 조정됩니다. 일반적으로 Ubuntu 22.04에서는 물리적 메모리 크기의 약 50%에서 66% 정도를 기본 스왑 파일 크기로 설정합니다.

 

예를 들어, 시스템이 4GB RAM을 가지고 있다면 기본 스왑 파일 크기는 약 2GB에서 2.7GB 정도로 설정될 수 있습니다. 이렇게 작은 기본 스왑 파일은 일반적으로 일상적인 작업 및 가벼운 서버 운영에는 충분하지만, 메모리 집약적인 작업이나 대규모 애플리케이션을 실행할 때에는 스왑 공간이 부족할 수 있습니다. 따라서 필요에 따라 스왑 파일 크기를 조정해야 할 수 있습니다.

 

스왑 설정 확인

swapon --show
$ swapon --show
NAME      TYPE      SIZE USED PRIO
/swap.img file        8G   0B   -2
/dev/sda3 partition  32G   0B   -3

메모리 및 스왑 공간 확인

free -h
$ free -h
               total        used        free      shared  buff/cache   available
Mem:            62Gi       2.5Gi        52Gi       8.0Mi       7.5Gi        59Gi
Swap:           39Gi          0B        39Gi

swap.img 용량 및 퍼미션 확인

ls -lh /swap.img
$ ls -lh /swap.img
-rw------- 1 root root 8.0G May 18 12:33 /swap.img

fstab(/etc/fstab) 편집

cat /etc/fstab | egrep swap.img
$ cat /etc/fstab | egrep swap.img
/swap.img	none	swap	sw	0	0

swap memory 비활성화

swapoff -v /swap.img
728x90

1. 스왑 파일 생성(fallocate 명령어)

스왑으로 사용할 파일을 생성합니다.

sudo fallocate -l 16G /swapfile

만약 fallocate 명령어가 작동하지 않는다면, dd 명령어를 사용할 수 있습니다.

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

2. 스왑 파일 권한 설정

생성한 스왑 파일의 권한을 올바르게 설정합니다.

sudo chmod 600 /swapfile

3. 스왑 파일을 스왑 영역으로 설정

스왑 파일을 스왑 영역으로 설정합니다.

sudo mkswap /swapfile

4. 스왑 활성화

스왑 파일을 활성화합니다.

sudo swapon /swapfile

5. 스왑 설정 확인

스왑 설정이 제대로 되었는지 확인합니다.

sudo swapon --show

또는

free -h

6. 스왑 파일을 영구적으로 설정

시스템 재부팅 후에도 스왑 파일이 자동으로 활성화되도록 /etc/fstab 파일에 항목을 추가합니다.

echo "/swapfile swap swap default 0 0" >> /etc/fstab

7. 스왑 파라미터 조정

리눅스 시스템에서 메모리와 관련된 성능 튜닝을 위해 vm.swappiness와 vm.vfs_cache_pressure 파라미터를 조정할 수 있습니다.

vm.swappiness 조정 방법

swappiness는 시스템이 물리적 메모리 대신 스왑 공간을 사용할 것인지 여부를 결정합니다. 값이 낮을수록 스왑을 덜 사용하고, 값이 높을수록 스왑을 더 많이 사용합니다.

 

현재 swappiness 값 확인

cat /proc/sys/vm/swappiness

일시적으로 swappiness 값 변경

sudo sysctl -w vm.swappiness=10

영구적으로 swappiness 값 변경

sudo vim /etc/sysctl.conf

파일의 끝에 다음 라인을 추가

vm.swappiness=10

변경 사항을 즉시 적용

sudo sysctl -p

vm.vfs_cache_pressure 조정 방법

vfs_cache_pressure는 커널이 디스크 캐시 데이터 (inode 및 dentry 캐시)를 얼마나 적극적으로 해제할지를 결정합니다. 값이 높을수록 캐시를 더 자주 해제합니다.

 

1. 현재 vfs_cache_pressure 값 확인

cat /proc/sys/vm/vfs_cache_pressure

2. 일시적으로 vfs_cache_pressure 값 변경

sudo sysctl -w vm.vfs_cache_pressure=50

3. 영구적으로 vfs_cache_pressure 값 변경

sudo vim /etc/sysctl.conf

파일의 끝에 다음 라인을 추가

vm.vfs_cache_pressure=50

변경 사항을 즉시 적용

sudo sysctl -p

요약

현재 값 확인

cat /proc/sys/vm/swappiness
cat /proc/sys/vm/vfs_cache_pressure

일시적으로 값 변경

sudo sysctl -w vm.swappiness=<value>
sudo sysctl -w vm.vfs_cache_pressure=<value>

영구적으로 값 변경

sudo vim /etc/sysctl.conf

파일의 끝에 다음 라인 추가

vm.swappiness=<value>
vm.vfs_cache_pressure=<value>

변경 사항 즉시 적용

sudo sysctl -p

 

vm.swappiness와 vm.vfs_cache_pressure 값을 확인하고 일시적 및 영구적으로 변경할 수 있습니다.

 

728x90