2010년 4월 14일 수요일

프로세스 메모리볼때

ps -elf | awk '{print $10" "$4" "$20}' | sort -n | tail -5 | sort -r

(프로세스중에서 메모리 사용량 큰거부터 내림차순으로 정렬 5개) - 확인해봅세~

리눅스는 실행중인 어플리케이션에서 요구하는 메모리를 제외한 대부분의 메모리를 디스크 캐쉬로 활용한다. 이러한 사실을 모르고 있다면, 메모리 현황 조회시 왜 free 메모리가 부족한지를 이해할 수 없을 것이다.
사실은 내가 그랬다. ^^;
Linux 에서는 메모리 사용 현황을 top 명령으로 조회할 수 있으며, 아래는 top 결과 샘플이고 샘플 내의 여러 항목들 중에서 free 와 cached 의 값이 이번 주제에서 중요 항목이다.

top - 09:40:42 up 74 days, 16:47,  3 users,  load average: 0.00, 0.02, 0.08
Tasks: 212 total,   1 running, 210 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:  16630888k total, 16559108k used,    71780k free,   100516k buffers
Swap: 16771776k total,    31920k used, 16739856k free, 16034200k cached

free 메모리가 작지만, cached 메모리는 어플리케이션이 메모리를 필요로 할 때 바로 반환될 수 있으므로 cached 메모리를 실질적으로는 free 메모리로 보아도 무방하다.
따라서 리눅스에서 가용 메모리 계산은 free + buffers + cached 로 할 수 있다.
위의 top 명령 결과로 메모리 용량을 분석해 본다면,
  - 전체 Pyhsical 메모리 : 16630888k total
  - 실질적으로 사용중인 메모리 : 16559108k used - 16034200k cached - 100516k buffers = 424392k
  - 실질적으로 가용한 메모리 : 71780k free + 100516k buffers + 16034200k cached = 16206496k
아래는 free -m 명령으로 조회한 결과이다. (m 옵션으 MB 단위 표시임)

             total       used       free     shared    buffers     cached
Mem:         16241      16188         52          0         98 15669
-/+ buffers/cache:        419      15821
Swap:        16378         31      16347

Mem: 라인에서의 free + buffers + cached 의 값은 -/+ buffers/cache: 라인의 free 값과 비슷하다

[출처] 프로세스 메모리 사용량 볼때|작성자

댓글 없음:

댓글 쓰기