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
오늘은 메모리 사용률에 대해 알아보았습니다.