시스템(Linux)

Linux에서의 SWAP에 대해 알아보겠습니다.

forward error correction Circle 2024. 11. 11. 08:38
반응형

Ⅰ. Linux에서의 SWAP이란?

 Linux 운영체제에서 물리적 메모리(RAM)가 부족할 때, 디스크 공간의 일부를 가상 메모리로 활용하여 시스템의 메모리 요구를 충족시키는 방법입니다. 주로 swap 공간은 시스템의 메모리 요구가 급증할 때 RAM의 데이터를 디스크로 옮겨 일시적으로 저장하고, 필요한 경우 다시 RAM으로 데이터를 불러오는 식으로 작동합니다. 이는 물리적 메모리의 부담을 줄이기 위한 것으로, 디스크에서 제공되는 공간이기 때문에 속도는 RAM보다 느리지만, 메모리 부족 시 시스템의 안정성을 유지하는 데 큰 역할을 합니다.

Ⅱ. Linux에서의 SWAP 역할

Swap 공간은 물리적 RAM이 부족할 때 추가 메모리 공간으로 활용됩니다.

주로 메모리 확장과 시스템의 안정성 높이는 역할을 합니다:
ⅰ. 메모리 확장

 RAM이 부족할 때 시스템이 안정적으로 동작할 수 있도록 도와줍니다. 예를 들어, 많은 애플리케이션을 동시에 실행할 때 시스템의 RAM이 가득 차면, 덜 사용되는 데이터나 프로세스가 swap으로 이동합니다.
시스템 안정성

 시스템이 예상보다 많은 메모리를 사용할 때, swap 공간을 활용하면 시스템이 중단되지 않고 지속적으로 작동할 수 있습니다.

Ⅲ. Linux에서의 SWAP 영역 구성

 ⅰ. Swap 파티션: 설치 시 디스크의 특정 공간을 할당하여 영구적인 스왑 파티션을 만들 수 있습니다.
 ⅱ. Swap 파일: 기존 시스템에서 필요에 따라 파일 형태로 swap 영역을 추가로 구성할 수 있습니다.

. Linux에서의 SWAP 메모리 작동 원리

 메모리가 가득 찼을 때, 커널은 우선순위가 낮거나 사용 빈도가 적은 데이터를 swap으로 이동시킵니다. 이 데이터는 사용자가 작업을 재개할 때까지 임시로 디스크에 저장되며, 다시 필요해지면 RAM으로 불러옵니다. 이 과정에서 발생하는 디스크 I/O는 RAM과 비교해 상대적으로 느리기 때문에 성능에 영향을 줄 수 있습니다.

. Linux에서의 메모리 반환

Linux는 메모리를 효율적으로 관리하기 위해 메모리 반환을 수행합니다. 반환 과정은 사용되지 않는 메모리를 찾아 이를 해제하는 과정으로, 시스템이 원활하게 동작하도록 돕습니다. 메모리 반환은 주로 다음 방식으로 이루어집니다:

 ⅰ. 캐시 정리: 사용 빈도가 낮은 캐시 메모리를 자동으로 정리하여 새 요청에 필요한 메모리 공간을 확보합니다.
 ⅱ. Swappiness 조정: /proc/sys/vm/swappiness 파일에서 설정된 swappiness 값에 따라 swap 사용 빈도를 조정합니다. 값이 높을수록 RAM에서 swap으로 데이터를 이동시키는 빈도가 높아지며, 메모리를 더 자주 반환하게 됩니다.
 ⅲ. 사용자가 메모리 반환 강제하기
필요에 따라 시스템에서 캐시나 swap을 강제로 해제하여 메모리를 확보할 수 있습니다. 예를 들어 다음 명령어를 사용하면 캐시를 정리할 수 있습니다:

# 페이지 캐시 정리
sudo sysctl vm.drop_caches=1

# Dentries 및 inodes 캐시 정리
sudo sysctl vm.drop_caches=2

# 모든 캐시 정리
sudo sysctl vm.drop_caches=3

캐시를 정리하면 현재 사용하지 않는 메모리가 반환되므로 시스템의 메모리 여유 공간을 확보할 수 있습니다.

Ⅵ. free -h 명령어의 출력 구성

 ⅰ. total: 시스템에 설정된 전체 swap 공간의 용량입니다. 이는 swap 파티션 또는 swap 파일의 총 크기를 나타냅니다.
 ⅱ. used: 현재 사용 중인 swap 공간의 양을 보여줍니다. 이는 RAM이 부족할 때 디스크에서 사용되는 가상 메모리입니다.
 ⅲ. free: 현재 사용되지 않고 남아 있는 swap 공간의 양입니다. 이는 아직 RAM이 부족하지 않거나, 스왑이 사용되지 않고 있는 경우입니다.
 ⅳ. shared: 여러 프로세스에서 공유하는 메모리의 양입니다. 이 항목은 일반적으로 swap과는 관련이 없습니다.
 ⅴ. buff/cache: 시스템이 파일 시스템의 캐시를 위해 사용하는 메모리의 양을 나타냅니다. 이는 프로세스가 사용하는 것이 아니라 시스템의 I/O 성능을 향상시키기 위해 사용됩니다.
 ⅵ. available: 실제로 프로세스에서 사용할 수 있는 메모리의 양을 보여줍니다. 이는 free 메모리와 cache된 메모리의 양을 포함합니다.

. Linux에서의 Swap 관리

 ⅰ. Swappiness

 Linux는 swappiness라는 매개변수를 통해 swap의 사용 빈도를 조정할 수 있습니다. 이 값은 0에서 100 사이의 정수로, 값이 낮을수록 RAM을 우선 사용하고 swap을 나중에 사용하게 됩니다. 기본값은 60입니다.
 ⅱ. 모니터링

 시스템의 swap 사용량을 정기적으로 모니터링하는 것은 중요합니다. 과도한 swap 사용은 성능 저하를 초래할 수 있으므로, 필요 시 swap 공간을 추가하거나 시스템 구성을 조정해야 할 수 있습니다.

반응형