23
오라클 기반 시스템의 Response Time 분석 Reviewed by Oracle Certified Master Korea Community ( http://www.ocmkorea.com http://cafe.daum.net/oraclemanager )

오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Embed Size (px)

Citation preview

Page 1: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

오라클 기반 시스템의 Response Time 분석

Reviewed by Oracle Certified Master Korea Community

( http://www.ocmkorea.com http://cafe.daum.net/oraclemanager )

Page 2: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

1. Introduction

1.1 Evolution of ORacle Performance Analysis

1.2 Holistic Performance Isolation Method(HPIM)

2. Define Response Time

2.1 Industry definition

Transaction : work의 단위

Queue : 서비스되기 위해서 대기중인 line, list를 말함

Queue Time : 대기 시간

Server : Transaction processor

Service Time : Transaction을 수행하는 시간

Response Time : queue time + service time

Response Time Tolerance : 사용자가 Response Time에 대한 만족 정도

2.2 Introduction to queuing thoery

2.3 Response time representation

R(t) = Q(t) + S(t)

Throughput Vs. Response Time

0.00

0.50

1.00

1.50

2.00

2.50

3.00

3.50

4.00

4.50

5.00

1.00

3.00

5.00

7.00

9.00

11.0

0

13.0

0

15.0

0

17.0

0

19.0

0

Throughput

Resp

onse

Tim

e

R Tolerance

Response Time

[그림 1] This iss the classic response time graph.

Page 3: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

[그림 2] This graph shows response time information in its two basic components(service

time and queue time) captured 23 times. Keep in mind that performace may not necessarily

be bad during samples 8 thru 15.

2.4 Oracle response time measurement challenges

2.4.1 No clear response time definition

2.4.2 No native Oracle transaction maker

2.4.3 CPU timing challenges

2.4.4 Perspective affects definitions

Oracle system perspective

Oracle database perspective

Application user perspective

3. Mesasuring Oracle response time

3.1 Idle Time and Think Time

Response time은 system level 혹은 session(특정 session id 이용)에 대하여 파악할 수 있다.

0

500

1000

1500

2000

Res

pons

e Ti

me

(min

utes

)

1 3 5 7 9 11 13 15 17 19 21 23

Samples

Oracle System Response Time

Queue TimeService Time

Page 4: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Oracle performance view를 이용한 session level response time은 transaction 표시기가 없어

서 session의 시작 시간과 끝 시간 사이와 실제 transaction 시간 시간과 끝 시간간에는 차

이가 발생한다. 이러한 gap을 idle time이라고 할 수 있다.

Session/transaction level에서의 response time에는 user think time은 존재하지 않는다. User

think time은 transaction간에만 발생하는 것이고 transaction이 수행할동안은 발생하지 않기

때문이다.

System 관점에서, idle time과 user think time은 밀접한 관계를 갖는다. 사실 이 두 시간을

구별한 방법이 없다. 따라서 시스템 관점에서 response time을 봐라보았을때, idle time과

user think time은 idle time 분류로 넣을 수 있다.

3.2 Deffering Response Time Needs

3.2.1 Session Level

사람들이 response time을 떠올릴때 일반적으로 session level의 response time을 떠올린다.

Oracle은 transaction을 정의할 수 있으므로 session level의 response time을 측정하면 항상

idle time이 존재한다.

[그림 3] Session level의 response time과 그 구성 요소.

R(t) = Q(t) + S(t)

S(t) = CPU(t)

Q(t) = I/O(t) + non -I/O(t) + Idel(t)

R(t) = Response time

Q(t) = Queue time

S(t) = Service time

Server Side Happenings Time

CPU used by this sessionSQL*Net message from client … db file scattered readdb file sequential readlog file sync

Query Start Query End Start Clock Stop Clock

Recorded Response Time

Real Response Time

Page 5: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

I/O(t) = I/O related queue time

Non-I/O(t) = Non-I/O related queue time

Idel(t) = Idle time

3.2.2 System level

전체적인 시스템의 response time을 알고싶을때 system level reponse time은 가치가 있다. 이

것은 시스템이 어디서 가장 시간을 많이 소요되는지, buttleneck이 어디인지를 판단할 수있

다.

Response time은 업무 transaction을 기본으로 하지만 Oracle은 업무 transaction을 표시할수

가 없으므로 system level에서 transaction level response time은 계산할 수가 없다. 그러나 시

스템 전체적으로 어디에서 시간이 소요되는지를 파악할 수있으므로 충분히 가지있는 일일

수 있다.

Idel time은 system level에서는 새로운 의미를 가질 수 있는데, system이 idle 상태에 있다면

idle time이 존재한다. 즉 이것은 무엇을 하고자하기 위하여 기다릴때 발생한다고 할 수 있

다.

E(t) = R(t) + Idle(t)

R(t) = Q(t) + S(t)

S(t) = CPU(t)

Q(t) = I/O(t) + non-I/O(t)

E(t) = Elapsed time

R(t) = Response time

Q(t) = Queue time

S(t) = Service time

I/O(t) = I/O(t) related queue time

Non-I/O(t) = Non-I/O related queue time

Idle(t) = Oracle system이 idle일때 발생

Page 6: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

3.3 How to measure Oracle response time

3.3.1 Categorizing wait events

I/O Read : 오라클 프로세스가 I/O read 관련된 정보를 wait할때 걸리는 시간. 이

시간은 queue time이라고 할 수 있는데 이것은 오라클 프로세스가 O/S에게 I/O

read 관련된 요청한 정보를 얻기위하여 기다리기 때문이다. 예로 db file sequential

read

I/O Write : 오라클 프로세스가 I/O write가 완료될때까지 기다리는 wait 관련 시간.

db file parallel write/log file checkpoint not complete

Idle : 시스템이 더이상 프로세스를 진행할만한 capacity가 없을때 기다리는 시간.

Bogus : non-relevant wait events와 관련된 시간. 대부분의 event가 bogus에 속하며

이 event들은 계산과정에 포함되지 않음. 의미있는 시간은 bogus wait event로서 기

록되어지기 때문에 신중하게 고려해야 할 것임

Order : non-I/O, idle, bogus categories와 관련된 시간. queue time에 속함. latch

free/log file sync/buffer busy waits/enqueue waits

Event 명 Type

BFILE check if exists bogus

BFILE check if open bogus

BFILE closure bogus

BFILE get length bogus

BFILE get name object bogus

BFILE get path object bogus

BFILE internal seek bogus

BFILE open bogus

BFILE read bogus

Contacting SCN server or SCN lock master bogus

DFS db file lock bogus

Page 7: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

DFS lock handle bogus

DLM generic wait event bogus

IO clients wait for LMON to join GMS group bogus

LMON wait for LMD to inherit communication channels bogus

Null event bogus

PX Deq Credit: free buffer bogus

PX Deq Credit: need buffer bogus

PX Deq Credit: send blkd bogus

PX Deq: Execute Reply bogus

PX Deq: Execution Msg bogus

PX Deq: Index Merge Close bogus

PX Deq: Index Merge Execute bogus

PX Deq: Index Merge Reply bogus

PX Deq: Join ACK bogus

PX Deq: Msg Fragment bogus

PX Deq: Par Recov Change Vector bogus

PX Deq: Par Recov Execute bogus

PX Deq: Par Recov Reply bogus

PX Deq: Parse Reply bogus

PX Deq: Signal ACK bogus

PX Deq: Table Q Close bogus

PX Deq: Table Q Get Keys bogus

PX Deq: Table Q Normal bogus

PX Deq: Table Q Sample bogus

PX Deq: Table Q qref bogus

PX Deq: Test for msg bogus

PX Deq: Txn Recovery Reply bogus

PX Deq: Txn Recovery Start bogus

PX Deque wait bogus

PX Idle Wait bogus

PX create server bogus

PX qref latch bogus

PX server shutdown bogus

PX signal server bogus

Page 8: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

Replication Dequeue bogus

SQL*Net break/reset to client bogus

SQL*Net break/reset to dblink bogus

SQL*Net message to client bogus

SQL*Net message to dblink bogus

SQL*Net more data to client bogus

SQL*Net more data to dblink bogus

Wait for a paralle reco to abort bogus

Wait for stopper event to be increased bogus

add process group bogus

alter system set mts_dispatcher bogus

buffer busy due to global cache bogus

buffer deadlock bogus

buffer latch bogus

buffer read retry bogus

checkpoint completed bogus

conversion file read bogus

debugger command bogus

dispatcher shutdown bogus

dispatcher timer bogus

dupl. cluster key bogus

file identify bogus

file open bogus

free global transaction table entry bogus

free process state object bogus

global cache bg acks bogus

global cache cr request bogus

global cache freelist wait bogus

global cache lock busy bogus

global cache lock cleanup bogus

global cache lock null to s bogus

global cache lock null to x bogus

global cache lock open s bogus

global cache lock open x bogus

Page 9: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

global cache lock s to x bogus

global cache multiple locks bogus

global cache pending ast bogus

imm op bogus

inactive session bogus

inactive transaction branch bogus

index block split bogus

instance recovery bogus

instance state change bogus

lock manager wait for dlmd to shutdown bogus

lock manager wait for remote message bogus

name-service call wait bogus

pending global transaction(s) bogus

pipe get bogus

pipe put bogus

pmon rdomain attach bogus

pmon timer bogus

process startup bogus

queue messages bogus

rdbms ipc message bogus

rdbms ipc message block bogus

rdbms ipc reply bogus

refresh controlfile command bogus

reliable message bogus

remove process group bogus

resmgr:wait in actses run bogus

resmgr:waiting in check bogus

resmgr:waiting in check2 bogus

resmgr:waiting in end wait bogus

resmgr:waiting in end wait2 bogus

resmgr:waiting in enter bogus

resmgr:waiting in enter2 bogus

resmgr:waiting in run (queued) bogus

resmgr:waiting in shutdown bogus

Page 10: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

resmgr:waiting in system stop bogus

retry contact SCN lock master bogus

scginq AST call bogus

secondary event bogus

single-task message bogus

slave exit bogus

slave wait bogus

smon timer bogus

switch logfile command bogus

timer in sksawat bogus

trace continue bogus

trace unfreeze bogus

trace writer I/O bogus

trace writer flush bogus

transaction bogus

unbound tx bogus

unread message bogus

unread message bogus

virtual circuit status bogus

wait for DLM latch bogus

wait for DLM process allocation bogus

wait for DLM reconfiguration to complete bogus

wait for checking DLM domain bogus

wait for gms de-registration bogus

wait for gms registration bogus

wait for influx DLM latch bogus

wait for inquiry response bogus

wait for lmd and pmon to attach DLM bogus

wait for lock db to become frozen bogus

wait for lock db to unfreeze bogus

wait for ownership of group-owned lock bogus

wait for pmon to exit bogus

wait for reconfiguration to start bogus

wait for recovery domain attach bogus

Page 11: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

wait for recovery domain latch in kjpr bogus

wait for recovery validate to complete bogus

wait for register recovery to complete bogus

wait for send buffers to send DLM message bogus

wait for tickets to send DLM message bogus

waiting to get CAS latch bogus

wakeup time manager bogus

writes stopped by instance recovery or database suspension bogus

SQL*Net message from client idle

SQL*Net message from dblink idle

SQL*Net more data from client idle

SQL*Net more data from dblink idle

control file sequential read ior

db file parallel read ior

db file scattered read ior

db file sequential read ior

direct path read ior

log file sequential read ior

LGWR wait for redo copy iow

control file parallel write iow

control file single write iow

db file parallel write iow

db file single write iow

direct path write iow

free buffer waits iow

io done iow

local write wait iow

log file parallel write iow

log file single write iow

log file switch (archiving needed) iow

log file switch (checkpoint incomplete) iow

log file switch (clearing log file) iow

log file switch completion iow

log file sync iow

Page 12: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

Event 명 Type

log switch/archive iow

write complete waits iow

PL/SQL lock timer other

Wait for a undo record other

buffer being modified waits other

buffer busy waits other

enqueue other

latch activity other

latch free other

library cache load lock other

library cache lock other

library cache pin other

log buffer space other

row cache lock other

sort segment request other

undo segment extension other

undo segment recovery other

undo segment tx slot other

0

500

1000

1500

2000

Res

pons

e Ti

me

(min

utes

)

1 3 5 7 9 11 13 15 17 19 21 23

Samples

Oracle System Response Time

Queue TimeService Time

[그림 4] This graph shows the basic response time components; service time and response

time. Understand when response time increases, rither there is simply more system activity,

Page 13: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

performance feels really bad, or both.

0200400600800

100012001400160018002000

Res

pons

e Ti

me

(min

utes

)

1 3 5 7 9 11 13 15 17 19 21 23

Sample Period

Oracle System Response Time

otwiowservice time

[그림 5] This graph details the basic Oracle queue time components. That is service time, I/O

queue time(iow) and, non-I/O or orther queue time or simply orther time waited(otw).

0%

20%

40%

60%

80%

100%

Res

pons

e Ti

me

(min

utes

)

1 3 5 7 9 11 13 15 17 19 21 23

Sample Period

Oracle System Response Time

otwiowservice time

[그림 6] This graph contains the exact same information as in the previous figure. What is

different is how the information is displayed. This presentation reduced the emphasis on

how bad performance might and highlights where we need concentrate our performance

tuning efforts.

Page 14: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

db file scattered 10%

Read 30%

db file sequential 90%

Doing 10% Write 70%Idle 30%

I/O 70%

RT 70% Waiting 90% direct path write 10%Log File 30%

SyncOther 30%

db file par write 90%Latch 70%

[그림 7] This is an Oracle system level response time component drill down graphic. (The

numbers are not related to the orther graphs.) This is a good way to convey response time

issues and performace strategies to others.

3.3.2 Data Sources

Session wait event view(v$system_event, v$session_event, v$session_wait)에서는 queue

time(I/O read, I/O write, other) and idle time을 측정하고, system statistic view(v$sessstat,

v$sysstat)은 service time(cpu time)를 측정한다. System 관점에서의 idle time은 session wait

view의 sql*net message [from|to] [client|dblink]에서 얻어지며, Service time은

session/system statistic views에서 통계 이름이 CPU used by this session에서 얻는다.

3.4 Quantifying User Irritation

Response time이 어느 부분에서 가장 시간이 많이 소요되는지 정보를 줌으로서 그 자체로

의미가 있지만 이 시간이 사용자 불만족이 어느정도이다를 말할 수는 없다. 따라서 우리는

response time뿐만 아니라 사용자 불만족이라는 것이 같이 필요하다.

사용자는 response time때문에 짜증이 나며, response time은 알다시피 queue time과 service

time으로 구성되어 있다. 어떤 경우는 performace ratio가 CPU time에 집중될 수 있고 또 어

떤 경우는 queue time에 집중될 수도 있다. 즉 이 비율이 커진다면 성능상에 문제가 있다고

할 수 있다. 이것을 식으로 나타내면 아래와 같다.

Response Time Ratio = Maximum (cpu busy ratio, queue time ratio)

Page 15: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

CPU Busy Ratio = Service Time/Available CPU Time

Queue Time Ratio = Queue Time/Response Time

CPU Busy Ratio와 Queu Time Ratio는 0 ~ 1 값 사이이다. 만약 거의 부하가 없다면 이 값은

1에 가까울 수 있다. 이 값들의 최대값이 성능의 문제를 나타낼 수가 있다.

많은 오라클 시스템으로부터 보면 경험적 수치로 보면 Response Time Ratio(RTR)이 50%를

넘으면 사용자는 불편해한다. 불행히도 OSM tool kit에서는 RTR값을 보여주고 있지는 않다.

다시 말해서 Response Time Ratio은 user irritant indicator라고 할 수 있다.

[그림 8] This figure details response time for a specific session for a specfic time frame. More

specifically, this script was started (time starts ticking), the user ran their thing, the script

was stopped (time stops ticking), and then this report was produced. This type of report is

absolutely essential to truly understand why a process is taking so long.

Page 16: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

[그림 9] This figure details response time for the system as a whole since the Oracle instance

was last started. This is a good way to get a general feel regarding response time and how

the users are probably feeling about performance.

Page 17: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

[

그림 10] This figure details response time for the system as a whole for the last 30 seconds as

opposed to since the instance was started. This is a good way to get a general feel regarding

response time and how the users are probably feeling about performance. The tool used

create this report is rtsysx.sql (OSM-I).

Page 18: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

nov17p>@rtsd

Tot Wait Response Time Other % % Elapsed Idle Time(min) CPU (min) IO Wait Wait CPU Wait Time(min) Time(min) [rt= Time [tw= Time Time OSM RT/ET RT RT [rt+idle] [idle] cpu+tw] (min)[cpu] iow+ow] (min)[iow] (min)[ow] Key Date--------- ------ ------ --------- --------- --------- ---------- -------- ---------- --------- ---- ------------ 0.071 90.46 9.54 8,573 7,960 613 554 58 56 3 46 Nov 17 16:11 0.066 92.55 7.45 8,272 7,729 543 502 40 39 1 47 Nov 17 17:16 0.060 89.76 10.24 5,734 5,391 343 308 35 34 1 48 Nov 17 18:20 0.048 99.64 0.36 5,071 4,826 246 245 1 1 0 49 Nov 17 19:25 0.080 98.90 1.10 3,485 3,207 278 275 3 3 0 50 Nov 17 20:27 0.083 92.35 7.65 3,597 3,298 300 277 23 19 4 51 Nov 17 21:29 0.183 70.26 29.74 3,800 3,106 694 488 207 170 37 52 Nov 17 22:32 0.577 33.70 66.30 2,132 902 1,230 415 816 799 17 53 Nov 17 23:36 0.851 22.88 77.12 1,813 271 1,542 353 1,189 1,164 25 54 Nov 18 00:38 0.949 19.64 80.36 1,930 99 1,831 360 1,471 1,456 15 55 Nov 18 01:42 0.964 18.73 81.27 1,921 68 1,853 347 1,506 1,486 20 56 Nov 18 02:48 0.125 19.17 80.83 13,750 12,033 1,717 329 1,388 1,379 9 57 Nov 18 03:51 0.395 24.83 75.17 4,069 2,464 1,606 399 1,207 1,190 18 58 Nov 18 04:54 0.178 54.45 45.55 7,625 6,271 1,353 737 617 611 6 59 Nov 18 05:57 0.022 91.34 8.66 31,028 30,349 680 621 59 56 2 60 Nov 18 07:00 0.020 91.78 8.22 33,952 33,287 665 611 55 49 6 61 Nov 18 08:03 0.081 90.94 9.06 7,535 6,926 609 554 55 52 3 62 Nov 18 09:06 0.118 82.95 17.05 6,829 6,025 804 667 137 122 15 63 Nov 18 10:08 0.034 64.61 35.39 26,941 26,015 925 598 328 242 85 64 Nov 18 11:12 0.129 74.79 25.21 7,365 6,412 953 713 240 235 5 65 Nov 18 12:18 0.083 85.18 14.82 13,490 12,374 1,116 951 165 160 6 66 Nov 18 13:23 0.024 89.66 10.34 52,037 50,794 1,244 1,115 129 123 5 67 Nov 18 14:29 0.005 92.59 7.41 135,578 134,863 715 662 53 50 3 68 Nov 18 15:37

[그림 11] This report summarizes response time during (i.e., within) each of the data

gathering periods. This type of report is essential to fully understand the system’s response

time characteristics

4. Performing Oracle Response Time Analysis

4.1 How to measure response time

전통적으로 response time은 service time과 queue time의 합이라고 할 수 있으나, 오라클 시

스템에서는 idle time과 elapsed time의 측정치가 필요하다.

Idle time : timing error(session level only), user think time (system time level only),

network transport time(session/system level), presentation time(session/system), 사

용자가 실행한 시간과 실제 오라클이 실행한 시간과의 차이(session/system)

Service time : CPU time

Queue time : I/O 관련된 wait 혹은 non-I/O 관련된 waits(즉 enqueue, latch, buffer

busy 등). Idle time은 session level 분석에서는 queue time에 포함된다.

Response time : service time + queue time

Elapsed time : response time + idle time

Page 19: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

OraPub에서 제공하는 System Monitor tool kit(OSM)에서 위의 값들을 측정할 수있는 스크립

트들을 제공하고 있다. 이 OSM tool kit에서는 대화식 (session/system) 측정과 주기를 갖고

측정하는 historical 방법을 모두 지원하고 있다. 또한 accumulated report(오라믈 시스템이

시작된 후 축적된 데이터로 부터 분석)와 delta report(특정 주기안에서의 정보)를 제공한다.

rtsum : Interactive system level response time summary report

rtio : Interactive system level I/O wait summary wait event details

rtow : Interactive system level non-I/O wait summary with wait event details

rtsys : . Simply runs rtsum, rtio, and rtow.

rtsess<session id> : Interactive session specific response time details.

rts[a,d] : Historical system level response time summary report

rtio[a,d] : Historical system level I/O wait summary report

rtoe[a,d] : Historical system level I/O wait event detail report

rtow[a,d] : Historical system level non-I/O wait summary report.

rtowe[a,d] : Historical system level non-I/O wait event detail report

timechk<interval> : >. Checks Oracle CPU time reporting

4.2 How to validate a bottleneck

Service Time/Response Time > 0.5 이거나 Queue Time/Response Time > 0.5 이면 bottlneck

이 존재한다고 할 수 있으며 Service Time/Response Time > 0.5이면 service time을 중점적으

로 봐야하며, Queue Time/Response Time > 0.5 이면 queue time을 중점적으로 봐야 한다.

4.3 How to quantity user irritation

Response Time Ratio = Maximum (cpu busy ratio, queue time ratio)

4.4 How to focus performace tuning efforts

만약 Service Time/Response Time > 0.5 이라면 SQL 튜닝, CPU 파워 증가 등에 대한 service

time에 중점을 둬야 하며, Queue Time/Response Time > 0.5 이라면 queue time에 중점을 둬

야 하는데 대부분의 경우가 SQL 튜닝으로 해결하지만 기타 다른 방법(increase I/O capacity,

reducing I/O requirements, user bind variables 등)의 issue가 발생할 수있다.

Page 20: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

5. Case studies

5.1 Interactive Session Level Perspective

OSM tool의 rtsession.sql <sid>를 이용하면 아래와 같은 레포트가 display된다.

위의 결과로 부터 queue time to response time ratio가 93.12%이므로 queue time에 문제가 있

다고 볼수있다. Queue time의 대부분이 I/O wait에 집중되어 있고 I/O wait 중 db file

scattered read에 많은 wait가 발생됨을 알수있다. 즉 SQL 구문에서 full table scan이 발생되

므로 SQL 구문의 튜닝을 통하여 이 문제를 해결해야 한다.

5.2 Interacive System Perspective #1

OSM tool에서 rtsys.sql을 이용하면 Oracle Instance가 startup된 이후의 정보를 아래와 같이

display 해준다.

Page 21: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

위에서 부터 service time to response time ratio가 6.97%, queue time to response time이

93.03%임을 알 수있으며, queue time에 초점을 맞추어야 함을 알 수있다. Queue time은 대부

분 non-I/O 쪽이며 Non IO(orther) Wait Event에 보면 buffer busy wait에 몰려있음을 알 수

있다. Buttleneck를 자세히 분석하기위하여 인스턴스가 startup된 이후의 값이 아니라 최근의

response time의 activity를 연구할 필요가 있다.

5.3 Interactive System Perspective #2

OSM tool에 rtsysx.sql을 통하여 최근(60초)의 response time의 활동을 display해 볼 수있다.

그 결과는 아래와 같다.

Page 22: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

위의 결과로 부터 역시 buttlenect이 buffer busy wait과 관련있음을 알 수 있다.

5.4 Historical System Perspective

OSM tool kit 중 rtsd.sql을 이용하면아래와 같이 display한다.

Page 23: 오라클 기반 시스템의 Response Time 분석 ·  · 2006-03-17Oracle performance view를 이용한 session level response time은 transaction 표시기가 ... dispatcher timer

nov17p>@rtsd

Tot Wait Response Time Other % % Elapsed Idle Time(min) CPU (min) IO Wait Wait CPU Wait Time(min) Time(min) [rt= Time [tw= Time Time OSM RT/ET RT RT [rt+idle] [idle] cpu+tw] (min)[cpu] iow+ow] (min)[iow] (min)[ow] Key Date--------- ------ ------ --------- --------- --------- ---------- -------- ---------- --------- ---- ------------ 0.071 90.46 9.54 8,573 7,960 613 554 58 56 3 46 Nov 17 16:11 0.066 92.55 7.45 8,272 7,729 543 502 40 39 1 47 Nov 17 17:16 0.060 89.76 10.24 5,734 5,391 343 308 35 34 1 48 Nov 17 18:20 0.048 99.64 0.36 5,071 4,826 246 245 1 1 0 49 Nov 17 19:25 0.080 98.90 1.10 3,485 3,207 278 275 3 3 0 50 Nov 17 20:27 0.083 92.35 7.65 3,597 3,298 300 277 23 19 4 51 Nov 17 21:29 0.183 70.26 29.74 3,800 3,106 694 488 207 170 37 52 Nov 17 22:32 0.577 33.70 66.30 2,132 902 1,230 415 816 799 17 53 Nov 17 23:36 0.851 22.88 77.12 1,813 271 1,542 353 1,189 1,164 25 54 Nov 18 00:38 0.949 19.64 80.36 1,930 99 1,831 360 1,471 1,456 15 55 Nov 18 01:42 0.964 18.73 81.27 1,921 68 1,853 347 1,506 1,486 20 56 Nov 18 02:48 0.125 19.17 80.83 13,750 12,033 1,717 329 1,388 1,379 9 57 Nov 18 03:51 0.395 24.83 75.17 4,069 2,464 1,606 399 1,207 1,190 18 58 Nov 18 04:54 0.178 54.45 45.55 7,625 6,271 1,353 737 617 611 6 59 Nov 18 05:57 0.022 91.34 8.66 31,028 30,349 680 621 59 56 2 60 Nov 18 07:00 0.020 91.78 8.22 33,952 33,287 665 611 55 49 6 61 Nov 18 08:03 0.081 90.94 9.06 7,535 6,926 609 554 55 52 3 62 Nov 18 09:06 0.118 82.95 17.05 6,829 6,025 804 667 137 122 15 63 Nov 18 10:08 0.034 64.61 35.39 26,941 26,015 925 598 328 242 85 64 Nov 18 11:12 0.129 74.79 25.21 7,365 6,412 953 713 240 235 5 65 Nov 18 12:18 0.083 85.18 14.82 13,490 12,374 1,116 951 165 160 6 66 Nov 18 13:23 0.024 89.66 10.34 52,037 50,794 1,244 1,115 129 123 5 67 Nov 18 14:29 0.005 92.59 7.41 135,578 134,863 715 662 53 50 3 68 Nov 18 15:37

OSM key가 56 ~ 57인 점심시간 즈음에서 가장 사용자가 불만족스러움 상태이며 이 것은 사

용자로부터 맞는지 틀린지에 대한 체크를 해봐야 한다. 55 ~ 56에서 보면 대부분이 I/O wait

관련 시간이므로 I/O 분석에 초점을 두어야 한다.