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 값과 비슷하다
[출처] 프로세스 메모리 사용량 볼때|작성자 꽁
댓글 없음:
댓글 쓰기