본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


AIX 메모리 사용량 측정. sar -P All 2 5 // lsps -a Unix 
2007/03/09 17:31

http://blog.naver.com/lune23/150015334335

-----------------------------------------
java    (40510)101.0% PgSp:147.2m: root
-----------------------------------------
극히 정상적인 수치입니다. topas 에서 각 process당 나타나는 CPU수치는 각 CPU의 사용률을 합한 수치입니다.
"java  (40510) 101.0%" 라는 얘기는 CPU개수가 총 6개이므로, 사실은 101/600*100=16.8(%)란 얘기입니다.
그 수치는 CPU가 6개일 경우 최대 600% 까지 나올 수 있습니다.

> Kernel    4.0  |#
> User    17.3  |#####
> Wait      2.5  |#
> Idle    76.0  |#####################

지금 전체적으로 24% 를 사용하고 있네요. "sar -P ALL 1" 해 보세요.
CPU 별로 사용율이 나옵니다.

Unix 에서의 메모리관리와 Windows 기반의 메모리관리는 차이가 있습니다.
AIX,Solaris,HP-UX,Linux 등 OS에 따라 약간씩 다르기는 하지만, Unix 기반의 메모리
관리는 현격하게 Windows의 그것과는 다릅니다.

사용되는 메모리는 크게, 1) file caching 과 2)프로세스가 사용하는 heap영역인데,

1. 특정 프로세스가 내부에서 할당시킨 메모리영역은, 설령 내부에서 free 시켰다고 하더라도, 그 프로세스 외에는 다른 프로세스가 사용할 수 없습니다.
내부에서 free() 시키더라도, ps 등의 명령어로 보면, 여전히 해당 프로세스가 점유하고 있는 것처럼 보입니다.
결국, 일정시간이 지나면 지날 수록, 해당 프로세스가 사용하는 영역이 크지는 듯한 결과가 나타나고, 마치 전체 free 메모리 영역이 모자라는 것처럼 보이게 됩니다.
 
2. AIX와 같은 OS에서는 가용한 대부분의 메모리를 file cache을 위해 할당시킵니다.
따라서, 일정 시간이 경과하면, vmstat, top, monitor, perf, topas, sar 등의 명령으로 본 free memory size 는 턱없이 작은 수치처럼 보입니다.
그러나, 그것은 정말 메모리가 부족한 것이 아닙니다.
OS kernal 이 필요할 때, 알아서 조정합니다.
정말 메모리가 부족한 것인지를 확인하는 방법은 "vmstat 3"를 보았을 때, fr,sr 값이
지속적으로 튀는 현상이 일어날 때 입니다.
Linux 역시 대부분의 가용한 메모리를 file cache 을 위해 할당합니다. 만약 어떤 프로세스가 급하게 메모리를 요청하면 그 file caching용으로 할당시킨 일부를 떼어줍니다.

단지, top 으로 본 free memory size 가 턱없이 작다는 것 만으로 정말 메모리가 부족한
것은 아닙니다. UNIX 시스템에서, 궁극적으로 현재 실제 사용하고 있는 free memory를
산정하는 방법은 없습니다. sar, vmstat, topas, perf, mon, monitor,ps 등등의 명령어로
확인하시면 그 수치가 천차만별입니다. 유일하게 확인 할 수 있는 것은 "얼마나 가용한
메모리가 남아 있느냐"가 아니라 "현재 메모리가 부족하냐?"라는 것만 확인할 수 있다는
것이지요.

PS: 반면, AIX 의 경우,
swsvrctr:/> lsps -a
Page Space  Physical Volume  Volume Group    Size  %Used  Active  Auto  Type
hd6        hdisk0            rootvg        1024MB      50    yes  yes    lv
(*.95.187.205)