1. 개요 : vmstat, ps, svmon, 명령을 사용하여 Memory 병목을 진단하는 방법을 소개
2. 내용
1) vmstat
Memory 병목 부분이 page in/out 인지 확인합니다. 다음과 같이 실행합니다.
#vmstat 1
※ pi와 po가 계속 “0”보다 크다면 System이 느려집니다.
- pi : Paging 공간으로부터 Page in 되는 초당 Page 수
- po : Paging 공간으로 Page out 되는 초당 Page 수
System의 Process들이, RAM에서 가능한 Memory보다 더 많은 Memory를 요구한다면 Page들이 Paging 공간으로 Page Out 된 후 필요 시 다시 Page In 됩니다. Paging 공간을 사용하는 것은 RAM의 Memory를 사용하는 것보다 느리기 때문에 Page In, Page Out이 많이 일어나면 System 성능이 저하됩니다.
- fr : free 되어야 할 Page 수
- sr : fr에 지정된 수의 Page 를 free시키기 위해 조사된 Page 수
- fr : sr의 비율이 1:4 라면 하나의 Page가 free될 때 마다 4 Page가 조사되었다는 것을 뜻하는데 이것만으로는 Memory 부족이라고 볼 수는 없습니다. po*SYS>fr 이라면 시스템이 thrash되고 있는 것입니다. 여기서 SYS는 schedtune의 결과 값 중 하나로, Memory가 128MB 이상이면 기본값은 “0”이고 그렇지 않다면 “6” 입니다. "thrash"라는 것은 시스템이 과다한 page In/Out 으로 인해 Process가 느려지는 것을 뜻하며 System이 전반적으로 느려집니다.
2. svmon
Process 병목 원인이 특정 Process의 Memory 누수인지 확인합니다. 다음과 같이 실행합니다.
# svmon -Pau 10 | more 혹은 svmon –P -u -t 10 | more
결과로 다음과 같은 내용이 나타납니다.
위에 제시된 명령을 실행하면, Memory를 가장 많이 사용하는 상위 10개 Process가 나열됩니다. 내용 중에서 “Type = work”이고 “Description = private”인 부분을 보고, “Pgspace”에 몇 Page (4096byte)가 사용되는지 확인합니다. “Pgspace” 값이 감소는 되지 않고 계속 증가만 된다면 Memory가 새고 있는 것입니다. 이는 application이 메모리 deallocation 을 하지 않는 경우 나타납니다.
여기서는 1.4MB (341 * 4096 = 1,396,736)의 가상 메모리가 사용되고 있습니다.
3. ps
메모리 병목 원인이 특정 프로세스 메모리 과다사용인지 확인합니다. 다음과 같이 실행합니다.
#ps gv | head -n 1; ps gv | egrep -v "RSS" | sort +6b -7 -n –r
결과로 다음과 같은 내용이 나타납니다.
- SIZE : Process의 "Type = work"와 “ Description = private ” 영역에 대해 할당된 Paging 공간 크기(KB)
- RSS : Process의 "Type = work"와 “ Description = private ” 및 “ Type = pers ” 와 “Description = code”영역에 대한 RAM 사용 크기(KB)
- TRS : Process의 “Type = pers”와 “Description = code” 영역에 대한 RAM 사용 크기(KB)
- %MEM : RSS를 System RAM 크기로 나눈 비율(%)
'Operating System > AIX' 카테고리의 다른 글
| NTP 설정 (0) | 2010/10/19 |
|---|---|
| AIX OS Backup (0) | 2010/02/16 |
| AIX Memory 병목 진단 (0) | 2010/02/13 |