OS/LINUX2004. 9. 20. 19:01
반응형

CPU

 

[sar -q ] 프로세스에 대한 정보

 

SunOS fqrc 5.7 Generic_106541-19 sun4us    06/04/04

17:58:37 runq-sz %runocc swpq-sz %swpocc
17:58:42     1.0      20
17:58:47
17:58:52
17:58:57     5.0      20
17:59:02

Average      3.0       8

 

runq>3 또는 %runocc > 90 또는 runq > 10

-> CPU 부하가 높다.

 

일반적으로 runq-sz가 2보다 크고 동시에 %runocc 가 90이상이라면 CPU에 대한 부하가 커지고 response가 저하될수도 있다.

이것은 CPU할당을 기다리는 프로세스가 매우 많아 시스템의 response 에 미치지 못함을 나타낸다.

 

swpq 가 2보다 큰 경우는 메모리 부족을 생각할수 있다.

 

runq-sz 메모리상에서 실행가능한 프로세스의 실행큐 수

%runocc 실행큐가 점유되어 있는 시간의 비율

swpq-sz 스왑아웃되어 있는 실행가능한 프로세스의 실행큐수

%swpocc 스왑아웃되어 있는 실행큐가 점유되어 있던 시간의 비율

 

메모리

 

[sar -r] 빈메모리 정보에 대해서 리포트


18:08:37 freemem freeswap
18:08:42    2913  6228086
18:08:47    2964  6339745
18:08:52    2963  6352258
18:08:57    2964  6352335
18:09:02    2965  6352335

실제 freemem 산정방법

freemem(2913) x pagesize(8192) = 23863296 byte (23Mbyte)

 

실제 freeswap 산정방법

freeswap(6228086) x blocksize(512) = 3188780032 (3.2Gigabyte)

 

freemem값이 작다 ->

메모리 부족가능성

 

메모리 부족문제는 -q,-g,-w,-u 옵션의 결과도 비교해서 조사한다.

freemem이 작은 경우는 메모리 부족의 가능성이 있다. 이 값이 대단히 작은 경우에는 sar -k f로 커널 메모리 leak 가 발생하지 않도록 체크가 필요하다.

sar -r 로 표시된 freemem치에 여유가 있어도, swap -s 커맨드로 표시되는 available block 값이 0이하로 되면 swapping 영역부족이 발생할 우려가 있다.

 

freemem 유저 프로세스가 사용가능한 페이지의 평균치 (4K byte or 8k byte)

freeswap 프로세스의 스와핑에 이용 가능한 디스크 블록수 (512 byte)

 

 

[sar -p]: pagein 상황리포트 


18:12:38  atch/s  pgin/s ppgin/s  pflt/s  vflt/s slock/s
18:12:43    0.00    0.00    0.00  134.99  283.30    0.00
18:12:48    0.00    0.00    0.00  117.50  248.11    0.00
18:12:53    0.60    0.00    0.00  293.84  382.50    0.00
18:12:58    0.40    0.00    0.00  181.11  353.68    0.00
18:13:03    0.40    0.20    0.20  157.34  316.47    0.00

Average     0.28    0.04    0.04  176.95  316.81    0.00

 

vflt/s > 50 ->

메모리 부족 및 메모리 Inode 부족가능성

 

vflt/s는 유효한 page address 를 가상공간내에서 발견하지 못한 경우에 발생한다.

vflt/s 가 50이상이로 sar -g 결과, pgfree/s 가 5 이상인 경우 메모리가 부족할 가능성이 있다.

이것은 비어있는 페이지를 찾는데 시간이 걸리기 때문이다.

또한 sar -u,sar -w 및 sar -r 을 사용하면 메모리가 bottleneck 쌍태로 되어있지 않은가를 확인할

수있다.

 

평가기준

 

atch/s 메모리내의 페이지를 재요구함으로써 해소되는 페이지 결함(fault)수/초

pgin/s 페이지인 요구의 평균 수 /초

ppgin/s 페이지인 된 평균 페이지 수 /초

pflts/s 보호 에러에 기인한 페이지 결함(fault)수/초

vflt/s 어드레스 변환 페이지 fault 수 /초

slocak/s 물리 I/O를 요구하는 software lock 에 의한 fault 수/초

 

[sar -g]: pageout 상황리포트 

 

18:13:43  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
18:13:48     0.00     0.00     0.00     0.00     0.00
18:13:53     0.20     0.20     0.20     0.00     0.00
18:13:58     0.40     0.60     0.20     0.00     0.00
18:14:03     0.20     0.60     0.60     0.00     0.00
18:14:08     2.98     6.36     4.57     0.00     0.00

Average      0.75     1.55     1.11     0.00     0.00

 

pgfree/s > 5 or pgscan/s >5 ->

메모리 부족가능성이 있다.

 

sar -g 커맨드는 Pageout 상황을 리포트 한다.

pgfree/s 나 pgscan/s 가 5를 초과하는 경우는 메모리 부족가능성

 

페이지 데몬은 메모리의 내용을 디스크 장치에 쓰고 해방할 수 있는 메모리르 찾는다.

이 데몬은 빈 메모리량이 적어짐에 따라 빈번하게 동작하게 되며, 시스템의 실행 프로세스의 대부분이 페이징 동작에 점유되어 버림으로써 Bottleneck 이 된다.

이 경우는 sar -p, sar -u, sar -r 과 sar -w 등으로 메모리 부족을 판단하면 된다.

 

pgout /s 시스템에 요구된 페이지 아웃의 평균요구수/초

ppgout/s 페이지아웃된 평균 페이지수/초

pgfree/s 페이지데몬에 의해 freelist에 추가된 평균논리 페이지수/초

pgscan/s 페이지 데몬에 의해 스캔된 평균논리 페이지수/초

%ufs_ipf 메모리상의 빈 페이지로부터 i노드를 획득한 비율

 

swapping & process switch

 

[sar -w] 페이지아웃상황을 리포트

18:18:54 swpin/s bswin/s swpot/s bswot/s pswch/s
18:18:59    0.00     0.0    0.00     0.0     335
18:19:04    0.00     0.0    0.00     0.0     313
18:19:10    0.00     0.0    0.00     0.0     275
18:19:15    0.00     0.0    0.00     0.0     297
18:19:20    0.00     0.0    0.00     0.0     298

Average     0.00     0.0    0.00     0.0     303

 

swpot/s > 1.0 -> 

메모리 부족

 

swpot/s 가 1을 초과한 경우는 시스템은 심각한 메모리 부족 상태인 것을 나타낸다.

그러나 이 결과만으로는 bottleneck 의 측정이 불가능하므로 다시 sar -g , sar -r 등의 결과를 고려한다.

이 결과 메모리 부족이 확실한 경우는 버퍼 공간의 삭감 또는 메모리의 증설이 필요하다.

버퍼공간을 줄임으로써 메모리상에 존재할 수 있는 페이지를 제한할 수가 있으므로 프로세스에 메모리를 할당할 수 있게 된다. 그러나 스왑아웃이 빈번히 발생하고 있는 경우는 메모리의 증설이 필요하다.

또, pswch/s 가 클수록 프로세스 스위치에 의한 오버헤드가 커지는 것을 알수있다.

 

swpin/s  swapin의 횟수/초

bswin/s swapin에의해 전송된 page수/초

swpot/s swapout의 횟수/초

bswot/s swapout을 위해 page 전송된 블록수/초

pswch/s 프로세스 스위치 횟수/초

 

디스크

 

[sar -d] 디스크 사용상황

18:22:26   device        %busy   avque   r+w/s  blks/s  avwait  avserv

18:22:27   fd0               0     0.0       0       0     0.0     0.0
           nfs1              0     0.0       0       0     0.0     0.0
           sd0               2     0.0       1      15     0.0    17.1
           sd0,a             0     0.0       0       0     0.0     0.0
           sd0,b             0     0.0       0       0     0.0     0.0
           sd0,c             0     0.0       0       0     0.0     0.0
           sd0,d             0     0.0       0       0     0.0     0.0
           sd0,e             0     0.0       0       0     0.0     0.0
           sd0,f             2     0.0       1      15     0.0    17.1
           sd1               0     0.0       0       0     0.0     0.0

%busy > 60 -> 디스크 부하가 크다.

%busy 값이 특정 디스크에 편중되어 있다. -> 디스크의 부하가 편중되어 있다.

 

%busy 가 60을 초과한 경우는 그 디스크 장치의 부하가 매우 높은 상태임을 나타낸다.

또한 %busy 가 각 디스크 장치간에 편중되어 있는 경우는 특정 디스크 장치에 대한 부하가 높은 상태임을 알수 있다. 이 경우는 디스크 장치상의 각 파일 시스템의 구성을 변경하여 특정 디스크에 부하가 집중되지 않도록 디스크내의 데이터를 다른 디스크에 분산시키는 것이 가능한가 검토해 볼 필요가 있다.

 

또한 sar -g, sar -p 등을 실행한 결과 페이징이 자주 발생한다면 메모리 증설하여 디스크 장치에 대한 입출력 동작을 감소시키도록 한다.

 

%busy 값이 적고 avserv가 큰 경우에는 시스템이 정기적으로 sync를 실행한 결과, 변경된 블록의 디스크에 쓰기(write)를 지연없이 실행하고 있다고 생각한다.

 

%busy 디바이스가 전송요구 서비스에 소비한 시간의 비율

avque 실행을 기다리고 있는 요구의 평균수

r+w/s 디바이스에 대한 read/write 의 전송횟수/초

blks/s 디바이스에 전송된 블록수/초 (512바이트/블록)

avwait 전송요구가 queue상에서 기다리고 있는 평균시간(milisecond)

avserv 전송요구가 디바이스로부터 서비스를 받은 평균시간(milisecond)

 

 

시스템 호출

 

[sar -c] 시스템 호출 발생상황

 

일관되게 exec/s > fork/s x3 ->

환경변수 PATH의 내용이 효율적이지 않다.

 

1회의 읽기/쓰기 전송바이트 <  8Kbyte ->

시슽ㅁ 호출 발행을 위한 오버헤드가 커진다.

 

일관되게 exec/s 가 fork/s 의 3배 이상인 경우는 환경변수 PATH의 순서가 자주 사용하는 순서로 되어 있는 가를 조사할 필요가 있다. 단 exec/s 는 쉘 스크립트 실행의 경우에 증가한다.

일반적으로 read와 write 시스템 호출의 합계는 시스템 호출총수의 약 절반이 된다.

단, 그 비율은 시스템이 실행하는 동작에 비해 크게 다르다. 1회당 전송 바이트수가 8K 바이트보다 작은 경우, read와 write 시스템 호출의 발행을 위한 오버헤드가 커진다.

이러한 경우는 큰 파일을 작은 단위로 액세스하고 있는 할당의 유무를 조사하여 액세스 크기를 8K 바이트 이상으로 하는 편이 낫다.

 

전송바이트 계산식

read 전송바이트 수 = rchar/s / sread/s

write 전송바이트 수 = wchar/s / swrit/s

 

scall/s 발행된 전체 시스템 호출수/초

sread/s read 시스템 호출 발행횟수/초

swrit/ write 시스템 호출 발행횟수/초

fork/s fork시스템 호출 발행횟수/초

exec/s exec 시스템 호출 발행횟수/초

rchar/s read 시스템 호출이 전송한 문자수 (바이트수) /초

wchar/s write 시스템 호출이 전송한 문자수 (바이트수) /초

 

 

 

 

반응형

'OS > LINUX' 카테고리의 다른 글

[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] 리눅스 표준 디렉토리 구조  (0) 2004.11.24
[펌] sar 이용하여 시스템 모니터링하기  (0) 2004.09.20
[펌] NFS(Network File System)  (0) 2004.09.10
VI Editor  (1) 2004.06.02
Posted by [PineTree]