Linux에서의 SWAP에 대해 알아보겠습니다.
Ⅰ. 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 공간을 추가하거나 시스템 구성을 조정해야 할 수 있습니다.