본문 바로가기
Master R/M.IT

초보자를 위한 리눅스 메모리 사용 내용 이해하기

by MasterR 2023. 8. 23.

Master RYU

리눅스 메모리 사용량, 실질메모리, 명목메모리, swap

 

 안녕하세요. 오늘은 리눅스  메모리에 대해서 이야기를 해보려고 합니다.

리눅스가 설치된 서버의 장착된 메모리는 데이터를 임시로 저장하거나 빠르게 데이터를 처리하는데 도움을 주는 매체로서 프로세스 실행, 버퍼, 커널 등에서 사용합니다.

오늘은 프로세스 실행과 관련된 내용 중심으로 리눅스 메모리의 사용량을 어떻게 인지해야 하는지 이야기를 해보려고 합니다.

 

 메모리는 프로세스의 실행 속도를 향상시키기 위해서 buff/cache 영역을 별도로 구분하여 사용하고 있으며 실제로 가용한 메모리를 모두 사용하거나 메모리 부족, 압축 등이 필요할 경우를 대비하여 하드디스크 영역을 이용하여 Swap을 추가로 할당합니다. 

 

이미지 출처 : recoverhdd.com

 

 이에 기존 윈도우 사용자가 리눅스를 사용할 경우 실제 내가 사용 가능한 메모리 영역을 정확하게 인지하지 못하는 경우가 발생합니다. 

 

 그래서 오늘은 리눅스 메모리에 대해서 전문가가 초보자들이 알기 쉽게 이야기를 해보려고 합니다. 

 

  • 리눅스 메모리 확인
리눅스 메모리는 free 명령어를 통해서 확인할 수가 있습니다. 
free 하위 옵션을 통해 노출하는 형태를 변경할 수가 있으며 하위 옵션을 넣지 않을 경우 kilobytes로 노출을 합니다. 
개인적으로는 -h 옵션을 사용하며 기가바이트 이상은 'G', 메가바이트 이상은 'M', 킬로바이트 이상은 'K'의 기호를 숫자 뒤에 보여줍니다.  해당 옵션의 의미는 human-readable output을 의미합니다. 
buff/cache를 분리해서 확인하고 싶으면 -w 옵션을 추가하면 됩니다. 
total : 총 메모리 크기 
used : 현재 사용 중인 메모리(used = total - free - buff/cache)
free : 아무 것도 하지 않는 메모리
shared : 여러 프로세스가 공유하는 메모리
buff/cache : 버퍼와 캐시를 위한 메모리
available : 새로운 프로세스가 사용 가능한 메모리

리눅스 free 명령어

 

반응형

 

  • 실질 메모리와 명목 메모리
처음 free 명령어로 확인하는 경우 used, free, available 이 3가지 항목의 구분이 쉽지 않아 현재 사용 가능한 메모리가 얼마인지 바로 인지하기가 어렵습니다. 
이는 앞서 이야기한 것과 같이 리눅스의 경우 단편적인 메모리 사용량만을 보여주는 것이 아니라 shared, buff, cache와 같이 리눅스 운영을 위해 메모리 사용 영역을 보다 넓게 보여주고 있기 때문입니다. 
결국 실제로 사용하는 메모리와 할당된 메모리를 구분하기 위해서 도입된 명칭이 바로 실질 메모리와 명목 메모리이며 이를 통해 실제로 현재 리눅스 시스템에서 사용 가능한 메모리가 얼마인지 정확하게 알 수가 있습니다. 
실질 메모리 : 현재 사용 중인 메모리로 실질 메모리를 제외한 나머지가 사용 가능한 메모리를 의미합니다. 
명목 메모리 : 현재 사용 중인 메모리와 다른 용도로 할당된 메모리의 합이며, 여기서 다른 용도로 할당된 메모리는 buff/cache를 의미합니다. 명목 메모리는 사용 중이거나 사용하기 위해 할당된 메모리의 합을 의미합니다. 
결론적으로 내가 현재 사용 가능한 메모리는 전체 메모리에서 실질 메모리를 뺀 나머지이며, available 메모리양과 비슷합니다. 

아래 free -h 결과 값을 이용하여 실질 메모리와 명목 메모리를 계산하면

실질 메모리 = used = 14G(11%)
실제로 사용 중인 메모리는 14G입니다. 나머지 메모리인 111G는 사용 가능한 메모리입니다. 
명목 메모리 = used + buff/cache = 14G + 82G = 96G(76%)
실제로 사용 중인 메모리와 buff/cache에 할당된 메모리를 포함하여 전체 메모리에서 특정한 용도로 할당된 메모리 전체입니다. 

 

  • Swap
 swap은 임시 메모리 역할, 압축된 메모리 관리 등 물리적인 메모리의 한계를 보완하거나 메모리에 저장되어야 할 내용이지만 활용이 적은 데이터를 임시로 저장하기 위한 용도로 사용을 합니다. 
일반적으로 우리는 swap이 물리 메모리의 용량이 부족할 경우 임시로 메모리 역활을 수행하는 것으로 알고 있으며,  swap은 빠른 데이터 처리를 위한 물리 메모리 영역이 아닌 저장 용도의 하드디스크 영역을 사용하기에 속도가 느린 단점이 있습니다. 
swap 영역을 다 사용할 경우 시스템은 더 이상 할당할 메모리가 존재하지 않아 실행 중인 프로세스 중에 불필요한 프로세스를 종료합니다. 이를 OOM(Out of Memory) Killer라고 하며 모든 프로세스는 oom_score를 가지고 있으며 score가 높을 수록 죽을 확률이 높아집니다. 

 

 오늘은 리눅스 메모리 사용 현황을 확인하는 방법에 대해서 이야기를 해보았습니다. 

처음 리눅스 시스템을 접하는 분들은 시작하면서 거의 대부분에서 어려움을 느낍니다. 저또한 리눅스가 여전히 어렵습니다. 인터넷 상에 많은 내용들이 존재하지만 실제로 쉽게 이해가 되는 페이지가 많지 않습니다. 그래서 오늘 이렇게 내용을 정리해서 글을 올려봤습니다. 

많은 사람들에게 도움이 되길 바랍니다. 

반응형