본문 바로가기
  • Hello_
Linux

[Linux] swap 메모리 확인 및 초기화하기

by LDwDL 2023. 2. 6.
728x90
반응형

본 포스팅은 업무 중 갑자기 잘 작동되었던 알고리즘이 갑자기 확 느려졌을 때 해결했던 방법을 공유하고자 한다.

 

swap memory

스왑 메모리는 실제 물리적 메모리가 아닌 시스템 응답 불가 상태를 방지하기 위해 마련해 놓은 비상용 메모리이다. 따라서 알고리즘을 구동하는 중 swap memory를 많이 사용한다면 메모리 관련 오류 발생이 내재되어 있다고 봐도 된다.

 

필자는 알고리즘을 새롭게 구성한 뒤 실행을 시키니 몇 분뒤 급격히 속도가 저하되는 것을 알게 되었다.

코드 특성상 규모가 큰 데이터를 로드하고 저장하는 코드라 swap 메모리 관련 문제라 파악하고 swap 메모리 사용량을 확인했다.

 

swap 메모리 사용량 확인법은 "htop" 혹은 "free -m"을 활용하면 된다.

 

htop에서 왼쪽 밑에 위치해있는 Swp가 swap 메모리 사용량을 나타내는 부분이며 free -m에서는 밑에 Swap 부분이 swap 메모리 사용량을 보여준다.

 

htop
free -m

 

위 그림들과 같이 할당된 swap 메모리는 975M인데 모두를 사용하고 있었다.

 

swap memory 초기화

"swapoff -a"와 "swapon -a"는 각각 swap 메모리 사용을 중지시키는 명령어이고 활성화하는 명령어이다.

 

swapoff -a && swapon -a

 

이 둘을 순차적으로 실행시키기 위해 "swapoff -a && swapon -a"으로 합쳐서 명령창에 입력하면 swap 메모리를 내렸다 다시 시작하는 명령어가 된다.

 

swap memory

 

위 그림들과 같이 천천히 swap 메모리가 줄어들면서 할당된 메모리가 0K가 되었다가 swapon을 통해 976M를 할당받는다.

 

만약 "swapoff: Not superuser." 혹은 "swapon: cannot open /dev/mapper/cl--gpu1--vg-swap_1: Permission denieddenied" 와 같은 오류메시지가 떴다면 이는 sudo 권한을 부여하여 실행시키란 얘기로 "sudo swapoff -a && sudo swapon -a"로 변경해서 입력시켜 주면 된다.

 

sudo swapoff -a && sudo swapon -a

 

 

다음과 같이 swap 메모리를 초기화하는 법에 대해 알아보았다. 물론 유비무환이라고 gc.collect()를 메모리를 많이 잡아먹을 것 같은 부분 (ex - for loop, while..)에 군데군데 추가하는 습관을 가져보자.

 

gc.collect()의 간단한 설명은 다음 링크를 확인하면 된다.

 

[Python] gc.collect()

오늘은 gc 라이브러리의 collcect 함수에 대해 포스팅하겠다. gc.collect() gc 라이브러리는 파이썬이 구동될 때 메모리 관리를 수행한다. 필자는 gc.collect()를 주로 사용하며 대용량의 데이터를 저장하

baembaembaem.tistory.com

 

728x90
반응형

댓글