2011. 5. 17. 14:07

리눅스 여유 메모리 체크 관련

리눅스 시스템에서는 top 명령어로 나오는 출력 중에서 free 필드의 값으로 
여유메모리를 판단하는데 그것보다는
free -mt ( Mega 단위로 표시 ) 명령어로 확인하는 것이 더 낫다.

[root@localhost ~]# free -mt

                 total           used      free     shared    buffers     cached

Mem:          1769       1641        128          0        176       1351

-/+ buffers/cache:        113       1656

Swap:         4579          0       4579

Total:        6349       1641       4707

 
여기서 free 항목이 여유메모리이지만

실제로 메모리를 크게 잡아먹지 않는 데몬이 떠 있지 않아도 free 가 매우 적게 보이는 경향이 있다.

하지만 이것은 정상상태이다.

vmstat 1 10 ( 1초마다 10번 통계값을 출력 / 첫번째 출력값은 무시한다 why? 통계이므로 첫번째 값은 무시 ) 

[root@localhost ~]# vmstat 1 10

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0    108 129356 181168 1383480    0    0     4     6    7   11  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1026  139  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1012   97  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1019  126  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1010  108  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0    28 1027  160  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1004   87  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1025  157  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1010   97  0  0 100  0  0

 0  0    108 129356 181168 1383488    0    0     0     0 1019  124  0  0 100  0  0


 
여기서 보면 실제로 cashe 메모리가 높게 사용되고 잇는 것을 알 수 있다.
하지만 캐시메모리는 실제로는 free 메모리로 보는 것이 옳다.

리눅스에서는 자동적으로 모든 램의 공간을 버퍼 캐쉬로 사용하여 메모리를 효율성을 높이고 있으며

프로그램에서 많은 메모리를 필요로 하는 경우에는 자동으로 캐쉬의 크기를 줄인다.

그렇다면 위에서 실제로 사용가능한 메모리는 free+buffers+cached 이다.

-/+ buffers/cache: 줄이 이러한 내용을 반영하고 있다 

( 원문 : http://tunelinux.pe.kr/tune/tunning-pse/tunning.html )