리눅스 스왑(swap) 메모리 파일과 파티션

리눅스 스왑 메모리 파일 및 파티션

리눅스 스왑(swap) 메모리 파일과 파티션

swap 메모리는 파일과 파티션으로 나눠질 있습니다.

파티션은 그대로 디스크에 공간을 할당해서 일정 범위로만 사용하는 것이고

파일로 swap 메모리를 사용하게 되면 swap 파일 크기가 커질수록 로컬의 용량을 잡아먹게 됩니다.

 

fdisk 스왑 파일 만들기

스왑을 파일로 사용하는 경우는 일반적으로 많이들 사용하기 때문에 찾아보면 쉽게 나올 것이고 파티션으로 나눌 경우 fdisk 명령어로 82번으로 만들게 되면 Linux swap 영역으로 파티션 생성이 가능합니다.

 

swap, 메모리 부족은 증설의 포인트

 

swap영역

먼저 swap 영역이 무엇인지 알아보겠습니다.

swap영역은 물리 메모리가 부족할 경우를 대비해서 만들어 놓은 영역입니다.

메모리는 연산을 하기 위해 만들어놓은 일종의 저장 공간과 같은 것인데, 이 공간이 모자라면 프로세스는 더이상 연산을 위한 공간을 확보할 수 없기 때문에 전체 시스템이 응답 불가 상태에 빠질 수 있습니다.

이런 응답 불가 상태에 빠지지 않고, 시스템이 안정적으로 운영될 수 있도록 비상용으로 확보해 놓은 메모리 공간이 swap 영역입니다.

하지만 swap영역은 Physical Memory가 아니라 디스크의 일부분을 메모리처럼 사용하기 위해 만들어놓은 공간이기 떼문에(가상메모리), 메모리가 부족할 때 사용한다고는 하지만 메모리에 비해 접근과 처리 속도가 현저하게 떨어집니다.

그래서 swap 영역을 사용하게 되면 시스템의 전체적인 성능 저하가 일어납니다.

리눅스에서 사용중인 swap 영역 정보는 free명령을 통해서 확인할 수 있습니다.

 

free 명령으로 swap영역 확인하기

# free -k

 

             total     used            free  shared     buffers      cached

Mem :      8061188     4046344      4014844    4        140912      2279828

-/+ buffers/cache :    1625604      6435584  

Swap :     10485756(1)   30800(2)  10454956(3)

 

(1) 전체 swap 영역의 크기를 의미한다. -k 옵션은 KB단위이기 때문에 약 10GB 정도의 영역을 확보해둔 것을 알 수 있다.

(2) 현재 사용 중인 swap 영역의 크기를 의미한다. 30800KB 정도의 swap 영역을 사용하고 있다. 전체 영역에 비해서는 아주 적은 양이지만, swap 영역을 사용했다는 것 자체가 시스템에 메모리와 관련해 문제가 있을 수 있다는 의미이다. 아주 적은 양이라도 swap 영역을 쓰기 시작했다면 반드시 살펴봐야 한다.

(3) 현재 남아있는 swap영역의 크기이다.

 

swap 영역을 사용한다는 것 자체가 시스템의 메모리가 부족할 수 있다는 의미이기 때문에 어떤 프로세스가 사용하고 있는지 확인해볼 필요가 있습니다.

서비스 용도가 아닌 관리 용도의 프로세스에 메모리 누수가 있어서 메모리를 계속해서 점유하려 하고, 그 과정에서 swap을 사용하고 있을 수도 있기 때문입니다.

이런 경우라면 관리 용도의 프로세스를 죽여서 메모리 부족 현상으로 인한 성능 저하를 해결할 수 있습니다.

swap의 사용여부를 판단하는 것도 중요하지만 누가 swap을 사용하느냐도 매우 중요한 판단 기준이 됩니다.

모든 프로세스는 /proc/의 디렉터리에 자신과 관련된 정보를 저장합니다.

예를 들어 pid 1234인 프로세스는 /proc/1234에 관련 정보들이 저장됩니다.

프로세스가 사용하는 메모리에 대한 정보도 이곳에 저장되는데 그중에서도 /proc/smaps 파일이 바로 메모리 정보를 저장하고 있습니다.

 

특정 프로세스가 사용하는 전체 swap 영역에 대한 정보가 필요할 경우에는 /proc/status 파일을 통해서도 확인할 수 있습니다.

 

많은 출력 결과 중 VmSwap 항목이 해당 프로세스가 사용하는 swap영역에 대한 정보를 의미합니다.

이 외에 전체 프로세스별로 사용 중인 swap 영역의 크기를 확인하고 싶은 경우가 있는데, 이런 경우에 유용한 smem이라는 유틸리티가 있습니다.

smem유틸리티는 /proc/의 내용을 바탕으로 각 프로세스들의 메모리 사용 현황을 보여줍니다.

댓글

Designed by JB FACTORY