Download presentation
Presentation is loading. Please wait.
Published byAlessandra Dewing Modified over 9 years ago
1
1 Performance Data: What is Important and How Do I Make Sense of It Adam Backman A Nice Guy, DBAppraise
2
2 Agenda Why do you need a monitor? Monitoring Alternatives What Are VSTs? Basic Capabilities Advanced Features
3
3 Monitoring Tools/Services Free – Glance – TOP – PROMON – ProTop Not Free – OpenEdge Management – ProMonitor – DBAppraise
4
4 What Are VSTs? V irtual S ystem T ables A 4GL View of Progress Data Structures (the same as those shown in PROMON.) No Performance Impact (mostly) Primarily Read-Only Knowing what to use can be a challenge
5
5 Some VST Quirks Updateable: – _startup._spin – Private buffers Table & Index Ranges: -tablebase, -tablerangesize -indexbase, -indexrangesize – Table & Index Window can be reset! Quirky Keys: – _myconnection… – _tablestat & _indexstat
6
6
7
7 Basic Capabilities Summary Data Blocked Clients & Open Transactions Table & Index Activity User Activity Storage Area Capacity Estimating Big B Latches & Resources Clients & Servers
8
8 Summary Data 11:32:52 ProTop xvi -- Progress Database Monitor 07/05/05 Sample sports [/db/sports] Rate Hit Ratio: 182:1 195:1 Commits: 149 195 Sessions: 2057 Miss% : 0.549% 0.512% Latch Waits: 13 16 Local: 953 Hit% : 99.45% 99.48% Tot/Mod Bufs: 60002 3167 Remote: 956 Log Reads: 76342 80927 Evict Bufs: 2 1 Batch: 1045 OS Reads: 419 414 Lock Table: 1516 3 Server: 97 Rec Reads: 23789 23619 LkHWM|OldTrx: 1392 00:00 Other: 51 Log/Rec: 3.2091 3.4264 Old/Curr BI: 54 54 TRX: 26 Area Full: 1 98.60% After Image: Disabled Blocked: 0
9
9 Sample, Summary, Rate & Raw Data BaseValue LastValue ThisValue SampleTime SummaryTime SampleRate = (ThisValue – LastValue) / SampleTime. SummaryRate = (ThisValue – BaseValue) / SummaryTime. SampleRaw = (ThisValue – LastValue). SummaryRaw = (ThisValue – BaseValue).
10
10 Blocked Sessions Usr Name Note ----- ------------ ---------------------------------- 24 tom REC XQH 102 [Order] julia
11
11 Locked Records for each _Lock no-lock while _Lock-usr <> ?: if _Lock-recid = _Connect-wait1 then do: find _file where _file._file-num = _Lock-table no-error. bxtbl = _file._file-name. end. if _Lock-usr = _Connect-usr then bxwait = bxwait + “ “ + _Lock-flags. else bxque = bxque + " " + _Lock-name. end. bxnote = bxtbl + bxwait + bxque.
12
12 Open Transactions Usr Name TRX Num BI Clstr Start Trx Stat Duration Wait ---- ----- -------- -------- -------- -------- -------- ---------- 9 root 2432897 1024 15:39:05 ACTIVE 00:00:01 -- 29440 20 root 2432896 - ALLOCATE 00:00:00 -- 20115 5 root 2432898 1024 15:39:06 ACTIVE 00:00:00 -- 21952 7 root 2432899 1024 15:39:06 ACTIVE 00:00:00 -- 19040 23 julia 2418661 - ALLOCATE 00:00:00 -- 0 22 tom 2417938 - ALLOCATE 00:00:00 -- 0
13
13 Table Activity Table Statistics Tbl# Table Name Create Read Update Delete ---- ---------------- --------- --------- --------- --------- 4 OrderLine 0 444 11 0 18 Order 0 98 1 0 24 POLine 0 92 1 0 23 PurchaseOrder 0 42 1 0 21 Bin 0 5 0 0 2 Customer 0 4 0 0 1 Invoice 0 1 0 0 10 Employee 0 0 0 0 13 Family 0 0 0 0
14
14 Table Stats /** This does NOT work if –tablebase <> 1!!! find _File no-lock where _File._File-num = p_tbl no-error. find _TableStat no-lock where _TableStat-id = p_tbl no-error. display p_tbl _file-num _TableStat-id. **/ /*** use the following: ***/ find _TableStat no-lock where _TableStat-id = p_tbl no-error. find _File no-lock where _File._File-num = _TableStat-id no-error. display p_tbl _file-num _TableStat-id.
15
15 Index Activity Index Statistics Idx# Index Name Create Read Split Delete BlkDel ---- --------------- -- ------ ------ ------ ------ ------ 22 orderline PU 0 44 0 0 0 12 CustNum PU 0 3 0 0 0 2 _File/Field PU 0 0 0 0 0 3 _Field-Name U 0 0 0 0 0 5 _File/Index PU 0 0 0 0 0
16
16 Index Type find _IndexStat no-lock where _IndexStat-id = p_idx no-error. find _Index no-lock where _Index._Idx-num = _IndexStat-id no-error. find _File where recid( _File ) = _Index._File-recid no-error. tt_index.idxnote = _File._File-name + “. ” + _Index._Index-name + ( if _file._prime-index = recid(_index) then “ P" else “ " ) + ( if _index._unique then "U" else "" )
17
17 User IO Activity UIO Usr Name Flags PID DB Access OS Rd OS Wr Hit% ---- ------- ----- ------ --------- ----- ----- ------- 13 tom SB 13590 2266 200 1 91.13% 10 jami SB 13584 190 6 1 97.10% 16 julia SB 13596 185 6 1 97.03% 17 peter SB 13598 181 5 1 97.07% 15 emily SB 13594 177 5 1 97.12% 11 tiger SB* 13586 166 4 0 97.58% 14 tucker SB 13592 159 5 1 97.10% 19 granite SB 13602 146 1 0 99.25% 7 astro SB 13578 145 4 1 97.16%
18
18 Estimating Big B Big B GuessTimator Pct Big B % db Size Hit:1 Miss% Hit% OS Rd ----- --------- --------- ----- ------ ------- ----- 10% 6000 0.124% 30 3.306% 96.694% 1343 25% 15001 0.311% 48 2.091% 97.909% 849 50% 30001 0.622% 68 1.479% 98.521% 601 100% 60002 1.243% 96 1.046% 98.954% 425 <= 150% 90003 1.865% 117 0.854% 99.146% 347 200% 120004 2.486% 135 0.739% 99.261% 300 400% 240008 4.973% 191 0.523% 99.477% 213
19
19 Big B http://www.peg.com/lists/dba/history/200301/msg00509.html MissPct = 100 * ( 1 – ( LogRd – OSRd ) / LogRd )). HitPct = 100 – MissPct. OSRd = LogRd * ( MissPct / 100 ). m2 = m1 * exp(( b1 / b2 ), 0.5 ).
20
20 Latch Waits Id Latch Requests Waits Lock% --- -------------------- ---------- ---------- ------- 28 MTL_BF4 5540 33 99.40% 17 MTL_BHT 4205 106 97.49% 21 MTL_LRU 4154 55 98.68% 10 MTL_LHT 1800 24 98.65% 15 MTL_LKF 1798 0 100.00% 26 MTL_BF2 1218 6 99.48% 27 MTL_BF3 1184 10 99.13% 25 MTL_BF1 1150 10 99.16% 4 MTL_OM 913 4 99.60%
21
21 Resource Waits Id Resource Locks Waits Lock% --- -------------------- ---------- ---------- ------- 10 DB Buf S Lock 2661 0 100.00% 6 Record Get 658 0 100.00% 7 DB Buf Read 40 0 100.00% 2 Record Lock 21 0 100.00% 11 DB Buf X Lock 11 0 100.00% 19 TXE Share Lock 11 0 100.00% 8 DB Buf Write 3 0 100.00% 21 TXE Commit Lock 2 0 100.00% 1 Shared Memory 0 0 0.00% 3 Schema Lock 0 0 0.00%
22
22 Servers and Clients Servers Srv Type Port Con Max MRecv MSent RRecv RSent QSent TimeSlice --- ----- ----- --- --- ----- ----- ----- ----- ----- --------- 1 Login 7150 0 1 0 0 0 0 0 0 2 Auto 1026 10 55 0 0 0 0 0 0 3 Auto 1027 10 55 23 13 0 6 10 86 Server IO Srv Type Port Con Max DB Access OS Rd OS Wr Hit% --- ----- ---- --- --- --------- ----- ------ ------- 19 Auto 1043 10 55 5041 2 0 99.96% 20 Auto 1044 10 55 1348 1 0 99.96% 18 Auto 1042 10 55 157 1 0 99.51% 16 Auto 1040 10 55 42 1 0 98.70%
23
23 Storage Area Capacity Area Statistics Area Area Name Blocks Hi Water Free %Used RPB Note ---- ------------- ------- -------- ------- ------- --- --------- 1 Control Area 31 9 22 29.03% 64 3 Primary Recovery 31998 30720 1278 96.01% 1 6 Schema Area 11711 10688 1023 91.26% 64 i(25) ** 7 Cust_Dat 895975 602498 293477 67.24% 64 t(48) 8 Cust_Idx 191991 115270 76721 60.04% 64 i(157) 9 Sales_Dat 1311962 1103066 208896 84.08% 64 t(41) 10 Sales_Idx 271986 184401 87585 67.80% 64 i(125)
24
24 Storage Area Capacity for each _AreaStatus no-lock, _Area no-lock where _Area._Area-num = _AreaStatus._AreaStatus-Areanum: bfree = _AreaStatus-Totblocks - _AreaStatus-Hiwater. if ( _AreaStatus-Freenum <> ? ) then bfree = bfree + _AreaStatus-Freenum. if bfree = ? then bfree = _AreaStatus-totblocks. used = (( _AreaStatus-totblocks - bfree) / _AreaStatus-totblocks ) * 100. end.
25
25 Storage Area Contents for each _storageobject no-lock where _storageobject._area-number = xid and _storageobject._object-num > 0 and _storageobject._object-associate > 0: if _storageobject._object-type = 1 then so_tbl = so_tbl + 1. else if _storageobject._object-type = 2 then so_idx = so_idx + 1. end.
26
26 Balancing IO Database File IO Id Extent Name Mode Blksz Reads Writes Extends ---- ------------------- -------- ----- ------ ------- -------- 12 sports2000_11.d1 BUFIO 1024 28 3 0 6 sports2000_8.d1 BUFIO 1024 9 0 0 13 sports2000_11.d2 BOTHIO 1024 6 0 0 1 sports2000.db BOTHIO 1024 2 0 0 3 sports2000.d1 BOTHIO 1024 1 0 0 4 sports2000_7.d1 BUFIO 1024 1 0 0 8 sports2000_9.d1 BUFIO 1024 1 0 0 10 sports2000_10.d1 BUFIO 1024 1 0 0 2 sports2000.b1 UNBUFIO 8192 0 1 0 9 sports2000_9.d2 BOTHIO 1024 0 0 0
27
27 A Monitoring Architecture VST Based Multi-Platform – UNIX Character – HTML – Windows GUI Using Publish & Subscribe
28
28 Events That A Module Handles Mon-Restart – Empty Temp-Table – Remove self from memory Mon-Init – Empty Temp-Table – Define Display Data Elements Mon-Update – Refresh Data – Calculate intervals, rates and so forth – Update UI Temp-Table with results
29
29 Q uestions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.