먼저 Swap이라는 개념을 알기전에 주기억장치인 RAM(Memory)과 보조기억장치로 사용되는 HDD나 SSD의 역할에 대해 알고계시면 더 도움 될 수있습니다.
해당 포스트에선 Swap 에 대해서만 다루도록 하겠습니다.
Swap 이란?
주기억장치의 용량, 즉 시스템에 메모리가 부족할 경우 데이터 손실이 일어나거나 프로세스가 기동할 수 없는, 프로세스의 동작에 문제가 생기는 경우를 사전에 방지하고자 보조기억장치인 하드디스크의 공간을 활용하여 메모리 역할을 할 수 있게 도와주는 영역을 Swap이라고 합니다
Swap의 동작개념
실제 메모리(RAM)가 가득차면 Swap공간이 사용되는데, 물리 메모리의 비활성 페이지가 Swap 공간으로 이동하게 되면서 사용하게 됩니다. 만약 물리 메모리의 공간이 여유가 되서 동작을 위한 용량이 확보되면 다시 Swap공간에서 물리메모리 영역으로 페이지가 할당됩니다.
해당 과정을 Swapping 이라고 표현합니다.
영단어 그대로, 할당됬던 자원을 상호간의 이동이 이루어진다는 개념때문에 "교체된다" 라는 의미로 지어진 단어입니다.
만약 사용중인 프로세스의 의해서 물리 메모리공간과 Swap의 공간이 둘다 Full 났을때는 System Hang 상태에 빠지게되며, 메모리 확보를 할수 있도록 어떤 프로세스가 종료되거나 예정되어있던 작업이 마치게 되면 해소 될수도 있지만 대부분 어떠한 작업도 할 수 없는 Freeze 상태가 되어버립니다.
이럴땐 재부팅을 시키던가 Kdump(Kernel 의 Memory단 Dump) 를 떨어뜨리고 재기동 시켜주는 trigger를 동작시켜 해당 Dump를 분석하여 원인을 파악해야합니다. (사전에 Kdump 활성화 필수)
떨어뜨린 Dump의 내용은 메모리의 저장된 정보를 떨어뜨리기 때문에 메모리를 분석하는 특정 툴을 사용해 분석해야하고 전문적인 지식이 필요하기 때문에 벤더사에 의뢰하는것이 옳바릅니다. (ex. Red Hat 을 통한 CaseOpen)
Swap의 종류
Swap은 Filesystem 형태로도 생성할 수있고 Partition Volume 형태로도 사용할 수있습니다.
(Filesystem 형태 : 이미 생성된 공간에 특정 사이즈를 가진 파일형태로 존재)
대부분의 Linux 배포판에선 해당 Swap 공간을 Filesystem 형태보단 Partition Volume 형태로 생성하여 사용하는것을 권고하고있습니다. (P.S Swap을 따로 할당하지 않아도 물리메모리만 충분하다면 운영하는데는 문제가 없습니다.)
Swap의 용량
용량은 운영환경 시스템의 활용, 구성에 따라 권장사양은 각각 다를수 있습니다.
(ex. 어플리케이션단에서 사용되는 솔루션 공급업체에서 권장하는 Swap 사이즈가 존재할 수 있습니다)
배포판마다 다르지만 예전 서버를 운용할때는 장착되어있는 물리메모리의 사양이 높지 않았기 때문에
Red Hat에선 물리메모리의 20%정도 되는 사이즈를 권고했습니다.
요즘은 고사양을 가진 운용장비들이 많기에 굳이 Swap을 설정하지 않아도된다는 개인적인 생각이 있지만..
그래도 설정하겠다면 물리메모리 64GB 이하에서 Swap 사이즈를 4GB정도 가져가는것을 권장하고 있고
2~8GB사이의 물리메모리가 장착되어있다면 RAM용량과 동일하게 생성하는것을 권장하고 있습니다.
참고 URL: https://access.redhat.com/ko/solutions/744483
Swap 생성방법
앞서 말했던것처럼 Swap은 HDD나 SSD와 같은 저장공간을 사용하기에 기본적으로 Partition Volume 형태를 생성해 구성합니다. (Linux 기준)OS 설치 시 Disk 영역의 설정파트에서 특정 파티션으로 생성할 수 있습니다.
Linux에서 Partition 생성 시 Partition의 타입(Standard / LVM), Partition Volume의 대한 Filesystem Type, Size, Mount Point를 설정하게 되는데, GUI 환경의 Installer 에선 해당 부분을 클릭하여 Size와 Partition의 타입만 기입하면 생성됩니다.
Swap 영역에 대한 Size와 Partition을 지정 후 OS설치 시 사진과 같이 Swap 영역은 Filesystem Type 또한 Swap이며 Disk의 한 Partition 형태로 지정되기에 Mount Point는 별도 존재하지 않습니다.
(하기 사진참조)
Swap의 특징 및 주의사항
Swap 메모리영역은 시스템의 메인메모리가 부족한 상황에서 성능보다는 메모리 부족으로 인한 프로세스의 갑작스런 Crash 상황이나 Hang상태를 방지하고자 만든 임시/보조의 공간입니다.
게다가 저장공간의 영역인 HDD/SSD에 존재하기에 실제 물리메모리보다 성능은 10배이상 차이가납니다.
당연히 Swapping 없이 물리메모리선에서 프로세스가 하고자하는 일을 마무리 짓는것이 좋으니 메모리 부족현상이 일어난다면 Swap공간의 확장보다는 물리메모리 증설이 권고입니다.
(메모리 사용률이 높은 프로세스의 경우, 일부 inactive 메모리들을 디스크로 Swapping하여 메모리 부족 현상을 방지할수는 있지만 운용장비에서 물리 메모리 가용치가 매우 높기때문이기도 함)
추가적으로 하기 명령을 통해 Swapping 에 대한 빈도를 설정할 수 있는 OS Kernel parameter가 존재하며
# sysctl -a | grep swappiness 명령을 통해 vm.swappiness의 값(Swapping 빈도에 대한 값)을 확인할 수 있습니다
해당 값의 Default는 60이며 숫자가 증가할 수록 Swap을 적극적으로 사용하게 설정이 가능합니다.
Kernel Parameter 튜닝시엔 # systctl 명령으로 바로 적용시킬 수도 있지만, /etc/sysctl.conf or /etc/sysctl.d/XXX.conf 파일내용에 '파라미터 = 값' 의 형태로 작성하여 적용시킬수도 있습니다(# sysctl -p "파일경로" 를 통해 online 상 적용가능)
이외로 특정 솔루션의 경우 물리메모리만 사용할건지, 물리메모리와 스왑을 같이 어느정도의 비율을 가지고 사용할건지는 해당 솔루션마다 따로 정의되어 있을 수도 있기 때문에 Swapiness에 대해서 OS단으로 정의할수 없을 가능성도 있습니다.
Swap 공간은 적은 양의 RAM이 할당된 시스템에서는 도움이 되지만, 실제 물리메모리처럼 간주해서는 안된다는게 핵심 포인트라고 생각하면 됩니다.
다음은 OS설치 후 해당 Swap 공간 비활성화 및 추가증설방법에 대해 포스팅 하겠습니다.
'OS > RHEL | CentOS' 카테고리의 다른 글
Swap 영역 생성/확장 (Standard Partition / LVM) (0) | 2022.07.05 |
---|---|
RHEL (Red Hat Enterprise Linux) EOS (End Of Service) 날짜 (0) | 2022.06.17 |
CentOS EOL(End Of Life) 날짜 및 Rocky Linux (0) | 2022.06.17 |
Linux Password 강제 변경 방법 및 복잡성 정책 (0) | 2022.06.16 |
ANSI코드를 이용한 Bash Prompt 색상 변경 방법 (0) | 2022.06.15 |
댓글