IT 알아보기

리눅스 메모리 사용률 확인(명목/실질)

3학년 1반 민군 2020. 12. 1. 14:17

리눅스 메모리 사용률 확인(명목/실질)

리눅스에서 메모리 사용량을 확인하기위해 free, sar, top 등의 커맨드로 확인합니다.

 

이때 free 명령으로 확인한 정보를 유휴 메모리라고 생각 할 수 있습니다.

 

하지만 free의 경우 사용가능한 메모리가 아닌 실제로 사용되지 않는 메모리용량입니다.

 

실제 사용가능한 메모리의 자원을 확인하려면 cache영역과 buffer영역을 더한 값으로 확인합니다.

CACHE : 메모리에 적재되었던 데이터를 일시적으로 보관하는 공간

BUFFER : 파일에 write 명령이 내려지면 리눅스는 바로 명령을 수행하지 않고  CPU가 바쁘지 않을때 명령을 수행한다.

이때 데이터를 담아두는 공간

[oracle@ORACLE11 ~]$ free
             total       used       free     shared    buffers     cached
Mem:       3783364    3705044      78320     743084     228604    3152744
-/+ buffers/cache:     323696    3459668
Swap:      8388604      16400    8372204

이 명령으로 확인한 결과 total 3783364 중 3705044가 사용중이고 78320가 사용가능한 남은공간으로 확인됩니다.

 

하지만 이는 실제 사용간읗나 자원이 아닌 명목상 메모리사용률이라고 합니다.

 

실제 메모리 사용량을 구하기 위해서는 다음의 과정이 필요합니다.

 

명목메모리 사용률 = used / total = ( total - free ) / total

실질메모리 사용률 = used2 / total = ( total - free2[2] ) / total = ( total - free - buffers - cached) / total

 

이를 매번 계산하는것보다 쉘 스크립트 또는 .bash_profile에 등록하여 사용이 가능합니다.

[oracle@ORACLE11 ~]$ TOTAL=`free | grep ^Mem | awk '{print $2}'`
[oracle@ORACLE11 ~]$ USED1=`free | grep ^Mem | awk '{print $3}'`
[oracle@ORACLE11 ~]$ USED2=`free | grep ^-/+ | awk '{print $3}'`
[oracle@ORACLE11 ~]$ NOMINAL=$((100*USED1/TOTAL))
[oracle@ORACLE11 ~]$ ACTUAL=$((100*USED2/TOTAL))
[oracle@ORACLE11 ~]$ echo NOMINAL=${NOMINAL}% ACTUAL=${ACTUAL}%
NOMINAL=98% ACTUAL=8%
[oracle@ORACLE11 ~]$ echo $NOMINAL			명목상 메모리 사용률
98
[oracle@ORACLE11 ~]$ echo $ACTUAL			실제 메모리 사용률
8

이렇게 실제 메모리와 명목메모리는 다를 수 있습니다.

첨부
메모리 사용률 상위 10개 확인
ps -ef --sort -rss | head -n 11

오늘은 메모리 사용률에 대해 알아보았습니다.