"리눅스 명목메모리사용률, 실질메모리사용률"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 4명의 중간 판 38개는 보이지 않습니다)
5번째 줄: 5번째 줄:


==개요==
==개요==
*리눅스는 유휴 공간을 캐시 영역으로 잡아두는 습성이 있다. (...)
* 리눅스는 유휴 공간을 캐시 영역으로 잡아두는 습성이 있다. (...)<ref>남는 메모리를 최대한 캐시로 활용하면 성능향상에 도움이 된다. 아마 윈도우도 마찬가지일 것이다. 다만 윈도우는 임시 캐시 영역을 유휴 공간을 표시해주는 것으로 추정된다. 반대로 리눅스 쪽이 지나치게 솔직하다고 해야 하나...</ref>
*실질적인 의미의 메모리사용률을 구하려면 캐시 영역도 유휴 메모리로 봐야 한다.
* 실질적인 의미의 메모리사용률을 구하려면 캐시 영역도 유휴 메모리로 봐야 한다.
:명목메모리 사용률 = used / total = ( total - free ) / total
:실질메모리 사용률 = used2 / total = ( total - free2<ref>free 명령어 실행결과 2행에 있는 free 값(버퍼+캐시 포함)</ref> ) / total = ( total - free - buffers - cached) / total
* free 열의 두번째 행이 실질적인 유휴메모리 용량이다.
 
[[파일:free_-m.2.png]]


==예시 1==
==예시 1==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@localhost1 ~]# free -m
[root@localhost1 ~]# free
             total      used      free    shared    buffers    cached
             total      used      free    shared    buffers    cached
Mem:       354636     145920     208715          0      1695      10028
Mem:       1016828     933428      83400      31380      63516     536812
-/+ buffers/cache:    134195     220440
-/+ buffers/cache:    333100     683728
Swap:      133195          0     133195
Swap:      524284      1984     522300
</source>
</syntaxhighlight>
*전체 용량 = 354636
*전체 용량 = 1016828
*명목 여유 메모리 = 208715
*명목 여유 메모리 = 83400
*실질 여유 메모리 = 220440 (≒208715+1695+10028)
*실질 여유 메모리 = 683728 ( = 83400 + 63516 + 536812 )


==예시 2 (명목 100%)==
==예시 2 (명목 100%)==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@localhost2 ~]# free -g
[root@localhost2 ~]# free -g
             total      used      free    shared    buffers    cached
             total      used      free    shared    buffers    cached
27번째 줄: 32번째 줄:
-/+ buffers/cache:        26        99
-/+ buffers/cache:        26        99
Swap:            7          1          6
Swap:            7          1          6
</source>
</syntaxhighlight>
*전체 용량 = 125 GB
*전체 용량 = 125 GB
*명목 사용량 = 125 GB, 명목 유휴량 = 0 GB, 명목 사용률 = 100.0%
*명목 사용량 = 125 GB, 명목 유휴량 = 0 GB, 명목 사용률 = 100.0%
33번째 줄: 38번째 줄:


==스크립트==
==스크립트==
<source lang='bash'>
* bash 기본 계산기능 활용한 스크립트. 소수점 버림
MEM_TOTAL=`free | grep ^Mem | awk '{print $2}'`
<syntaxhighlight lang='bash'>
MEM_FREE1=`free | grep ^Mem | awk '{print $4}'`
TOTAL=`free | grep ^Mem | awk '{print $2}'`
MEM_FREE2=`free | grep ^-/+ | awk '{print $4}'`
USED1=`free | grep ^Mem | awk '{print $3}'`
MEM_NOMINAL=`echo "100-(100*$MEM_FREE1/$MEM_TOTAL)" | bc -l`
USED2=`free | grep ^-/+ | awk '{print $3}'`
MEM_ACTUAL=`echo "100-(100*$MEM_FREE2/$MEM_TOTAL)" | bc -l`
NOMINAL=$((100*USED1/TOTAL))
echo NOMINAL=${MEM_NOMINAL:0:5}% ACTUAL=${MEM_ACTUAL:0:5}%
ACTUAL=$((100*USED2/TOTAL))
</source>
echo NOMINAL=${NOMINAL}% ACTUAL=${ACTUAL}%
<source lang='dos'>
</syntaxhighlight>
[root@jmnote ~]# free
* bc 활용한 스크립트. 소수점까지 계산가능
<syntaxhighlight lang='bash'>
TOTAL=`free | grep ^Mem | awk '{print $2}'`
USED1=`free | grep ^Mem | awk '{print $3}'`
USED2=`free | grep ^-/+ | awk '{print $3}'`
NOMINAL=`echo "100*$USED1/$TOTAL" | bc -l`
ACTUAL=`echo "100*$USED2/$TOTAL" | bc -l`
echo NOMINAL=${NOMINAL:0:5}% ACTUAL=${ACTUAL:0:5}%
</syntaxhighlight>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# free
             total      used      free    shared    buffers    cached
             total      used      free    shared    buffers    cached
Mem:      1048576    1040180      8396          0     62796     101372
Mem:      1016828    949980      66848      31384     88300     523012
-/+ buffers/cache:    876012     172564
-/+ buffers/cache:    338668     678160
Swap:     2031608      52680    1978928
Swap:       524284      1964    522320
</source>
</syntaxhighlight>
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# MEM_TOTAL=`free | grep ^Mem | awk '{print $2}'`
[root@zetawiki ~]# TOTAL=`free | grep ^Mem | awk '{print $2}'`
[root@jmnote ~]# MEM_FREE1=`free | grep ^Mem | awk '{print $4}'`
[root@zetawiki ~]# USED1=`free | grep ^Mem | awk '{print $3}'`
[root@jmnote ~]# MEM_FREE2=`free | grep ^-/+ | awk '{print $4}'`
[root@zetawiki ~]# USED2=`free | grep ^-/+ | awk '{print $3}'`
[root@jmnote ~]# MEM_NOMINAL=`echo "100-(100*$MEM_FREE1/$MEM_TOTAL)" | bc -l`
[root@zetawiki ~]# NOMINAL=`echo "100*$USED1/$TOTAL" | bc -l`
[root@jmnote ~]# MEM_ACTUAL=`echo "100-(100*$MEM_FREE2/$MEM_TOTAL)" | bc -l`
[root@zetawiki ~]# ACTUAL=`echo "100*$USED2/$TOTAL" | bc -l`
[root@jmnote ~]# echo NOMINAL=${MEM_NOMINAL:0:5}% ACTUAL=${MEM_ACTUAL:0:5}%
[root@zetawiki ~]# echo NOMINAL=${NOMINAL:0:5}% ACTUAL=${ACTUAL:0:5}%
NOMINAL=99.19% ACTUAL=83.54%
NOMINAL=92.86% ACTUAL=33.31%
</source>
</syntaxhighlight>
:→ 명목 메모리 사용률 99.19%
:→ 명목 메모리 사용률 92.86%
:→ 실질 메모리 사용률 83.54%
:→ 실질 메모리 사용률 33.31%


==같이 보기==
==같이 보기==
*[[리눅스 메모리 용량 확인]]
* [[리눅스 메모리 용량 확인]]
*[[리눅스 메모리 사용률 확인]]
* [[리눅스 메모리 사용률 확인]]
*[[리눅스 메모리 사용량순 프로세스 보기]]
* [[리눅스 메모리 사용량순 프로세스 보기]]
*[[리눅스 캐시 메모리 비우기]]
* [[리눅스 캐시 메모리 비우기]]
*[[리눅스 스왑 메모리 사용량]]
* [[리눅스 스왑 메모리 사용량]]
* [[cgroup 메모리 사용률]]


==참고 자료==
==참고==
*http://blog.scoutapp.com/articles/2010/10/06/determining-free-memory-on-linux
*http://blog.scoutapp.com/articles/2010/10/06/determining-free-memory-on-linux
*http://kldp.org/node/78415
*http://kldp.org/node/78415
*http://blog.daum.net/oszone/27
*http://blog.daum.net/oszone/27
*http://eqcode.com/wiki/Left
*http://eqcode.com/wiki/Left
*https://github.com/jmnote/bash/blob/master/jm_mem_log.sh


[[분류: 리눅스]]
[[분류: 리눅스]]
[[분류:메모리 사용률]]

2022년 12월 19일 (월) 10:53 기준 최신판

nominal memory usage, 명목 메모리 사용량
actual memory usage, 실질 메모리 사용량
nominal memory usage ratio, 명목 메모리 사용률
actual memory usage ratio, 실질 메모리 사용률, 실제 메모리 사용률 (리눅스)

1 개요[ | ]

  • 리눅스는 유휴 공간을 캐시 영역으로 잡아두는 습성이 있다. (...)[1]
  • 실질적인 의미의 메모리사용률을 구하려면 캐시 영역도 유휴 메모리로 봐야 한다. ★
명목메모리 사용률 = used / total = ( total - free ) / total
실질메모리 사용률 = used2 / total = ( total - free2[2] ) / total = ( total - free - buffers - cached) / total
  • free 열의 두번째 행이 실질적인 유휴메모리 용량이다.

Free -m.2.png

2 예시 1[ | ]

[root@localhost1 ~]# free
             total       used       free     shared    buffers     cached
Mem:       1016828     933428      83400      31380      63516     536812
-/+ buffers/cache:     333100     683728
Swap:       524284       1984     522300
  • 전체 용량 = 1016828
  • 명목 여유 메모리 = 83400
  • 실질 여유 메모리 = 683728 ( = 83400 + 63516 + 536812 )

3 예시 2 (명목 100%)[ | ]

[root@localhost2 ~]# free -g
             total       used       free     shared    buffers     cached
Mem:           125        125          0          0          1         96
-/+ buffers/cache:         26         99
Swap:            7          1          6
  • 전체 용량 = 125 GB
  • 명목 사용량 = 125 GB, 명목 유휴량 = 0 GB, 명목 사용률 = 100.0%
  • 실질 사용량 = 26 GB, 실질 유휴량 = 99 GB, 실질 사용률 = 20.8%

4 스크립트[ | ]

  • bash 기본 계산기능 활용한 스크립트. 소수점 버림
TOTAL=`free | grep ^Mem | awk '{print $2}'`
USED1=`free | grep ^Mem | awk '{print $3}'`
USED2=`free | grep ^-/+ | awk '{print $3}'`
NOMINAL=$((100*USED1/TOTAL))
ACTUAL=$((100*USED2/TOTAL))
echo NOMINAL=${NOMINAL}% ACTUAL=${ACTUAL}%
  • bc 활용한 스크립트. 소수점까지 계산가능
TOTAL=`free | grep ^Mem | awk '{print $2}'`
USED1=`free | grep ^Mem | awk '{print $3}'`
USED2=`free | grep ^-/+ | awk '{print $3}'`
NOMINAL=`echo "100*$USED1/$TOTAL" | bc -l`
ACTUAL=`echo "100*$USED2/$TOTAL" | bc -l`
echo NOMINAL=${NOMINAL:0:5}% ACTUAL=${ACTUAL:0:5}%
[root@zetawiki ~]# free
             total       used       free     shared    buffers     cached
Mem:       1016828     949980      66848      31384      88300     523012
-/+ buffers/cache:     338668     678160
Swap:       524284       1964     522320
[root@zetawiki ~]# TOTAL=`free | grep ^Mem | awk '{print $2}'`
[root@zetawiki ~]# USED1=`free | grep ^Mem | awk '{print $3}'`
[root@zetawiki ~]# USED2=`free | grep ^-/+ | awk '{print $3}'`
[root@zetawiki ~]# NOMINAL=`echo "100*$USED1/$TOTAL" | bc -l`
[root@zetawiki ~]# ACTUAL=`echo "100*$USED2/$TOTAL" | bc -l`
[root@zetawiki ~]# echo NOMINAL=${NOMINAL:0:5}% ACTUAL=${ACTUAL:0:5}%
NOMINAL=92.86% ACTUAL=33.31%
→ 명목 메모리 사용률 92.86%
→ 실질 메모리 사용률 33.31%

5 같이 보기[ | ]

6 참고[ | ]

  1. 남는 메모리를 최대한 캐시로 활용하면 성능향상에 도움이 된다. 아마 윈도우도 마찬가지일 것이다. 다만 윈도우는 임시 캐시 영역을 유휴 공간을 표시해주는 것으로 추정된다. 반대로 리눅스 쪽이 지나치게 솔직하다고 해야 하나...
  2. free 명령어 실행결과 2행에 있는 free 값(버퍼+캐시 포함)
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}