리눅스에서 메모리 사용량을 확인하는 방법을 알아보자.
기존 centos 6.x 버전 밑으로는 free -m 을 통해서 메모리 사용량을 쉽게 확인할수 있었다.
캐시 영역의 메모리도 여유 메모리로 봐야 한다.
여기서 빨간색으로 표시는 USED 부분과 노란색 FREE 부분으로 메모리 사용량을 계산할수 있다.
전체 용량 : 3821
실질 여유 메모리 = 3383 = ( 142 + 161 + 3078 )
= ( 첫번째 항목에 노란색 부분의 값을 모두 더한값 / free + buffer + cached )
메모리 사용량 (%) = 메모리used/(메모리used+메모리free)*100
awk를 이용해서 위 메모리 값을 계산해보자 / 11.5 %의 메모리 사용량을 확인할수 있다
1 2 |
[root@localhost ~]# echo "438 3383" | awk '{printf "%.1f\n", $1/($1+$2)*100}' 11.5 |
그러나 CENTOS 7 에서는 free -m 입력했을 때는 used항목과 free 항목이 기존 centos 6.x 버전과 다르다 .
그러면 /proc/meminfo 명령어로 실질 메모리 사용량(%)를 계산해보자
메모리 USED = MemTotal: – MemFree: – Buffers: – Cached: 해당값 : 331572
메모리 FREE = MemFree: + Buffers: + Cached: 해당값 : 1543992
메모리 사용량(%) = 메모리USED/(메모리USED+메모리 FREE)*100 해당값 : 17.6 %
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@localhost ~]# vi memory_usage.sh #!/bin/bash MEMINFO=`cat /proc/meminfo | grep 'MemTotal\|MemFree\|Buffers\|Cached'` MEMTOTAL=`echo $MEMINFO | awk '{print $2}'` MEMUSED=`echo $MEMINFO | awk '{print ($2-$5-$8-$11)}'` MEMFREE=`echo $MEMINFO | awk '{print ($5+$8+$11)}'` ## 실질 여유 메모리 % MEMPER=`echo $MEMUSED $MEMFREE | awk '{printf "%.1f\n", $1/($1+$2)*100}'` echo "MEMTOTAL=$MEMTOTAL / MEMUSED=$MEMUSED / MEMFREE=$MEMFREE / MEMPER=${MEMPER}%" 결과값 확인 [root@localhost ~]# sh memory_usage.sh MEMTOTAL=1875564 / MEMUSED=331688 / MEMFREE=1543876 / MEMPER=17.7% |