MULTI-FETCH IN AND OUT OF NATURAL

Download Report

Transcript MULTI-FETCH IN AND OUT OF NATURAL

MULTI-FETCH
IN AND OUT
OF NATURAL
Jim Poole 1
CONTENTS
1. WHAT’S NOT COVERED
2. OVERALL
3. SYNTAX
4. HOW IT WORKS
5. NATURAL vs ADAMLF
6. UPDATING
7. HOW MUCH TO MULTI-FETCH
8. CONCERNS, ISSUES
2
WHAT’S NOT COVERED:
PREFETC
H
ADAMLF
Exclude:
PREFXFIL/
PREFXCMD
HISTOGRAM
L9’s
DIRECT
CALLS
PROGRAMS
ADAMLF:
NOT USING
PREFNREC
3
OVERALL “?WHAT IS MULTI-FETCH ?”
RETURN MULTIPLE RECORDS ON ONE ADABAS CALL/CMD
REGULAR PROCESSING
PROGRAM
READ FILE
:::
END-READ
ADABAS
CQ 
THREAD
*COUNTER=10,000
10,000 L3’S
10,000 CALLS TO ADABAS
10,000 CQ TO THREAD
10,000 RB’S FILLED
10,000 CALLS RETURNED
MULTI-FETCH PROCESSING
PROGRAM
ADABAS
READ FILE
CQ 
:::
THREAD
END-READ
*COUNTER=10,000
PREFNREC/MFF=100
100 L3’S
100 CALLS TO ADABAS
100 CQ TO THREAD
100 RB’S FILLED (WITH 100
RECORDS EACH)
100 CALLS RETURNED
4
OVERALL
“TWO APPROACHES TO MULTI-FETCH”
1. BATCH
PROGRAM
2. BATCH/ONLINE NATURAL V4
READ/FIND
MULTI-FETCH #MFF
:::
ADAMLF:
ADARUN PREF*=
:::
ADA LINK
ADALNK
NATMLF
ADAMLF
NOTE: PGM MLF HAS PRECEDENCE
5
SYNTAX: ADAMLF
JCL: //DDCARD
(ALL PREFACED BY ADARUN)
PREFETCH=YES / NO
PREFSBL=130000
PREFTBL=n*PREFSBL
PREFNREC=
* MLF BUFFER SIZE/SEQUENCE
* n=# MLF SEQUENCES)
* MAX RECS TO MLF
* Code ICMD/IFIL pairs for cmd/fnr to MLF
* ICMD cmd’s separated by ‘/’
* IFIL fnr’s separated by ‘,’
PREFICMD=cmd/cmd/cmd …
PREFIFIL=fnr,fnr,fnr …
!! ALWAYS CODE PREFNREC= !!
6
SYNTAX: ADAMLF EXAMPLES
PREFETCH=YES,PREFSBL=130000,PREFTBL=130000
PREFNREC=20,PREFICMD=L2,PREFIFIL=241
“FNR 241, ALL L2/L5 WILL MLF UP TO 20 RECORDS PER L2/L5”
PREFETCH=YES,PREFSBL=130000,PREFTBL=390000
PREFNREC=100
PREFICMD=L2/L3/L3
PREFIFIL=22,18,16
“3 MLF SEQUENCES:
L2/L5 FOR FNR 22
L3/L6 FOR FNR 18
L3/L6 FOR FNR 16”
7
SYNTAX: NATMLF
AVAILABLE WITH NATURAL 4
READ/FIND MULTI-FETCH factor view-name . . .
FOR EXAMPLE:
1 #MFF (I4)INIT <020> /*RECS/DB ACCESS FOR MLF
: : :
RD1. READ MULTI-FETCH #MFF DA-FILE PHYSICAL
“FOR FILE DA-FILE, 20 RECORDS WILL BE RETURNED ON
EACH DATABASE CALL”
8
SYNTAX: NATMLF RULES
1. READ LOGICAL. WORKS ON BOTH ASCENDING, DESCENDING.
2. DOES NOT WORK IF DYNAMIC SEQUENCE CHANGES:
“. . . IN DYNAMIC . . . SEQUENCE . . . “
3. ONLY WORKS FOR BROWSE LOOPS (NO RECORD HOLDS),
‘NO UPDATES’.
3a. IF ‘UPDATE,DELETE’ THEN MLF TURNED OFF (no error)
4. MLF BUFFER RELEASED WITH REPOSITIONING OR LOOP-END
5. MLF BUFFER RELEASED AT END OF LOOP (RC CMD)
9
SYNTAX: NATMLF MFF REDUCED BY
A. READ/FIND (NNN) . . .
IF MFF > NNN THEN NNN USED
IF MFF < NNN THEN MFF USED (extra records may be read)
B. RECORD BUFFER LENGTH (32K). More later
C. ISNQ (*NUMBER) FOR FIND STATEMENTS. More later
10
SYNTAX: NATMLF. MULFETCH BUFFER
NTDS MULFETCH,nn
Or
GLOBALS DS=(MULFETCH,nn)
nn = 0 – 1024 KILOBYTES OF MEMORY
=0
/= 0
MULTI-FETCH DISABLED
(NATURAL 4.1) SIZE AS NEEDED
(UP TO MAX BUFFER LENGTH)
11
HOW IT WORKS. DIRECT CALLS
ADABAS NUCLEUS
CB: CONTROL BLOCK CMD = L2/L5, L3/L6
L1/L4 where COP2=I or N
ILL = MAX RECS TO RETURN
COP1=M or O
FB: FORMAT BUFFER CID = NON-ZERO,NON-BLANK
RB: RECORD BUFFER DECOMPRESSED RECORDS
IB: ISN BUFFER
16 BYTE HEADERS:
4B – LENGTH OF THIS RECORD IN RB
4B – ADABAS RESPONSE CODE*
4B – ISN OF THIS RECORD
4B – FOR L9, ISNQ
*IF RSP.CODE /= 0 THEN NO RECORD STORED IN RB
NOTE: MAX BUFFER LENGTH = 32,768 (ADABAS 7)
NOTE: V8 ACBX USES MLF ABD vs IB FOR HEADERS
12
HOW IT WORKS. DIRECT CALLS,eg.
1 EMP VIEW OF EMPLOYEES
2 FIRST-NAME
2 NAME
2 MIDDLE-NAME
: : :
READ MULTI-FETCH 10 EMP BY NAME
ADABAS
CB: CMD=L3 ILL=10 COP1=M CID=X’02000101’
FB: AC,020,A,AE,020,A,AD,020,A.
FBL=27
RB: REC1 REC2 REC3 . . . REC 10
RBL=10x60
=600
IB: HDR1 HDR2 HDR3 . . . HDR 10
IBL=10x16
=160
13
HOW IT WORKS. MAX #MFF, PREFNREC
ADABAS V7
MAX AS DETERMINED BY IB:
IBL=32768
/ 16 = 2048
MAX AS DETERMINED BY RB:
RBL=32768 / rec.size
REC SIZE
60
200
2000
MAX FOR MLF
546
163
16
14
HOW IT WORKS. ET/BT
ADABAS NUCLEUS
CB: CONTROL BLOCK CMD = ET, BT
COP1 = P
ILL = COUNT OF 6b IB ENTRIES
IB: ISN BUFFER
6 BYTE ENTRIES:
2B – FILE NUMBER
4B – ISNs TO BE PUT BACK ON HOLD
NOTE: ONLY AVAILABLE FOR DIRECT CALL PROGRAMMING:
COP1=M RELEASE ONLY ISN’S IN IB
IB: 4b COUNT OF ELEMENTS
n8b ELEMENTS (4b FNR, 4b ISN)
15
HOW IT WORKS. CA-APAS
CB ISNLL = MAX MFF RECORDS REQUESTED
CA-APAS
ISN-LOWER-LIMIT ( ISNLL ) equals 0
ISNLL-REPORTED
shows MFF requested
ISN-QUANTITY ( ISNQ )
shows #RECS in RB
Note: ISNQ may not equal ISNLL-REPORTED
16
CPU COSTS OF
MULTI-FETCH
5 RUNS EACH:
MFF = 0
MFF = 10
MFF = 25
MFF = 50
MFF = 100
MFF = 1000
AVERAGES
SHOWN
PROGRAM
CPU
MFF= 0
10
NO ADABAS DELAY:
NO IO, NO OTHER USERS
25
50
100 1000
ADABAS
CPU
NO PGM DELAY.
MFF= 0
10
25
50
100 1000
17
NATURAL (NATMLF) vs ADAMLF
18
NATMLF PROCESSES
“NORMAL CALLS TO ADABAS”
ADABAS NUCLEUS
PROGRAM ADALNK
ADABAS
FILLS
BUFFER
1ST MLF CALL
PROGRAM
READS
BUFFER
ADABAS
FILLS
BUFFER
2nd MLF CALL
PROGRAM
READS
BUFFER
3rd MLF CALL
ADABAS
FILLS
BUFFER
AND SO ON . . .
SAVE ON
PGM-TO-ADA TIME
CQ-THREAD TIME
SOME PGM TIME
SOME ADA TIME
19
“ASYNC CALLS TO ADABAS”
ADAMLF PROCESSES
ADABAS NUCLEUS
PROGRAM ADAMLF ADALNK
½
1ST MLF CALL
PREFSBL
ADABAS
FILLS
BUFFER
2nd MLF CALL PROGRAM
READS
BUFFER
3rd MLF CALL
½
ADABAS
FILLS
BUFFER
ADABAS
FILLS
BUFFER
WHILE PROGRAM
PROCESS BUFFER,
ADABAS FILLS
NEXT BUFFER
PROGRAM
READS
BUFFER
AND SO ON . . .
20
ADAMLF PREFSBL USAGE
PREFSBL
1/2
1/2
1/4
IB
IB
3/4
RB
RB
IDEAL PREFSBL
FOR EXAMPLE:
PREFSBL
1/2
EACH IB
EACH RB
= 64K
= 32K
= 8K
= 24K
PREFSBL = 130,000
1/2
= 65K
EACH IB > 32K
EACH RB > 32K
! USE PREFNREC !
21
ADAMLF “WARM UP”
NOT USED IN NATMLF
DETERMINE RBL = ( PREFSBL / 2 ) X (3/4)
MAX RECORDS RETURNED ON EACH MLF ADAMLF CALL
1ST CALL - ONE RECORD RETURNED (NO MLF)
2ND CALL - NUMBER OF RECORDS THAT CAN FIT IN 1/8 RBL
3RD CALL - NUMBER OF RECORDS THAT CAN FIT IN 1/8 RBL
4TH CALL - NUMBER OF RECORDS THAT CAN FIT IN 1/2 RBL
5TH CALL - NUMBER OF RECORDS THAT CAN FIT IN RBL
:::
5+n CALL - NUMBER OF RECORDS THAT CAN FIT IN RBL
22
ADAMLF “WARM UP” Example
PREFSBL = 65K, RBL = ( 65K / 2 ) X (3/4) = 24,573 PREFNREC = 200
CALL#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IBL
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
8,190
RBL ISNQ*
100
1  1 REC, NOTE RBL=100
3,071
30  1/8 RBL
3,071
30  1/8 RBL
12,286 122  1/2 RBL
24,573 200  MAX REACHED
24,573 200
24,573 200
24,573 200
24,573 200
24,573 200
*NOTE: CA-APAS
24,573 200
ISNQ = RECS
24,573 200
MLF’D
24,573 200
23
24,573
17  EOF
ADAMLF vs NATURAL MLF (overall)
ADAMLF
NATURAL/PROGRAM MLF
1. ASYNC PROCESSING
SYNC PROCESSING
2. BATCH ONLY
ONLINE OR BATCH
3. NO PROGRAM CHANGES
CHANGED WITHIN PROGRAM
4. PREFNREC: FOR ALL SEQs
VARY FOR @ ACCESS LOOP
5. “WARMS UP”
WHAT YOU CODE, YOU GET
6. CAN DO UPDATES
! NO ! UPDATING
7. CONTROL VIA //DDCARD
CONTROL WITHIN PROGRAM
(PROCS, PDS MBRs, ETC.)
24
ADAMLF vs NATURAL MLF (Performance)
PERFORMANCE (PGM ELAPSED TIME) =
ADABAS RESPONSE
(CPU,IO,OVERLAP)
PATHLENGTH TO/FROM
PGM-ADABAS
* ( #RECS / MFF )
+
PGM PROCESS ADABAS
CALLS
PGM DELAY
(CPU,IO,ETC.)
* ( #RECS )
MULTI-FETCH SAVES ON:
1. PATHLENGTH
2. SOME ADABAS RESPONSE
3. SOME PGM TIME TO PROCESS CALLS
ADAMLF IMPROVES AS PGM DELAY INCREASES 25
ADAMLF vs NATURAL MLF (Performance)
IN THE LAB: NATMLF vs ADAMLF
MFF=100
800,000 RECORDS
READ PHYSICAL
MEASURE: PGM ELAPSED TIME
PGM CPU TIME
ADABAS RESPONSE TIME (DURATION)
ADABAS RELATIVE CPU TIME (CMDTIME)
SCENARIOS:
A. NO DELAY
ADABAS: NO IO, NO OTHER USERS
NATURAL: READ LOOP ONLY
B. ADABAS DELAY (IO)
C. ADABAS/PGM DELAY (LOTSA MOVE STATEMENTS)
FOR EACH SCENARIO, MULTIPLE RUNS NATMLF,ADAMLF
RESULTS
26
ADAMLF vs NATURAL MLF (Performance)A. NO DELAY
KEY:
ADAMLF
NATMLF
7
3
6
2.5
5
2
4
3
1.5
2
1
1
ELAPSED (NAT 12% Better)
0.5
0
1
2
3
4
5
6
7
CPU (3% Diff)
0
4
1
2
3
4
5
6
7
3.5
6
3
5
2.5
4
?
2
CQ-TRHD DELAY
3
1.5
2
1
1
0.5
CPU (NAT 56% Better)
DURATION (NAT 39% Better)
0
1
2
3
4
5
PROGRAM
0
6
7
1
2
3
4
5
ADABAS
6
7
27
B. ADABAS DELAY
ADAMLF vs NATURAL MLF (Performance)
KEY:
ADAMLF
NATMLF
6
80
5
70
60
4
50
3
40
30
2
20
1
10
ELAPSED (ADA 8% Better)
CPU (ADA 5% Better ?)
0
1
2
3
4
5
0
6
1
2
3
4
5
6
5
6
70
4
3.5
60
3
50
2.5
40
2
30
1.5
20
1
0.5
10
CPU (NAT 54% Better)
0
1
2
3
4
5
6
DURATION (No Diff)
0
1
PROGRAM
2
3
4
ADABAS
28
ADAMLF vs NATURAL MLF (Performance)
C. DELAY PGM/ADA
KEY:
ADAMLF
450
NATMLF
6
400
5
350
300
4
250
3
200
150
2
100
1
ELAPSED (ADA 22% Better)
50
0
1
2
3
4
5
CPU (2% Diff)
0
1
2
3
4
5
70
25
60
20
50
15
40
30
10
20
5
10
CPU (2% Diff)
DURATION (No Diff)
0
0
1
2
3
PROGRAM
4
5
1
2
3
ADABAS
4
5
29
MULTI-FETCH AND UPDATING
( ADAMLF )
30
ADAMLF. UPDATES. ET
REVIEW
Lx
CB COP1=‘O’
ET
CB COP1=‘P’
IB = 6b fnr/isn to
put back on HQ
FOR EXAMPLE:
RD1. READ TEST PHYSICAL
IF AM-FIELD = 'AA'
THEN AM-FIELD := 'BB'
ELSE AM-FIELD := 'AA'
END-IF
UPDATE (RD1.)
ETCNT := ETCNT + 1
IF ETCNT = ETLIMIT
END TRANSACTION
ETCNT := 0
END-IF
END-READ /*(RD1.)
END TRANSACTION
PREFNREC=100
PREFIFIL=241,PREFICMD=L2
RESULTS
31
ADAMLF. UPDATES. ET
CM
COP1
L5
O
A1
L5
O
L5
O
9 A1'S
ET
P
10 A1'S
ET
P
10 A1'S
: : :
ET
P
10 A1'S
L5
O
: : :
RC
S
RI
RI
: : :
ETLIMIT = 10
ILL
IBL
1 16,247  1ST CALL
0
0  UPDATE 1ST RECORD
100 16,247  1ST MLF CALL, 100 RECs
100 16,247  2nd ASYNC MLF CALL, 100 RECs
 9 MORE UPDATES
191 1,146  191 RECS BACK ON HOLD
 10 MORE UPDATES
181 1,086  181 RECS BACK ON HOLD
101
606
100 16,247  3rd ASYNC MLF CALL, 100 RECs
0
0
0 16,247  RECS ON HOLD AT LOOP END
0 16,247
32
ADAMLF. UPDATES. ET
ETLIMIT = PREFNREC = 100
(NOTE A1s NOT ON REPORT)
CM COP1
L5
O
L5
O
L5
O
ET
P
L5
O
ET
P
L5
O
ET
P
L5
O
ET
P
: :
RC
S
ILL
1
100
100
0
100
0
100
0
100
0
IBL
16,247
16,247
16,247
606
16,247
606
16,247
606
16,247
606
0
0
EVERY ET PUTS 101 RECS
BACK ON HOLD
!! CANNOT SYNC ET’S
WITH
PREFNREC !!
EOF, NO RI’s
MIN ADARUN NISNHQ=2 X PREFNREC
33
ADAMLF. UPDATES. ET COSTS
ET EVERY 1 A1
ADABAS AVG CPU TIME / ET
ET EVERY 10 A1
NREC =
ET EVERY 100 A1
0
1
2
25
3
50
4
100
5
200
34
ADAMLF. UPDATES. ET COSTS
50
ET EVERY 1 A1, 200K ET’S
ADABAS SUM CPU TIME ET’s
45
ET EVERY 10 A1, 20K ET’S
40
ET EVERY 100 A1, 2K ET’S
35
30
25
20
15
10
5
0
1
NREC =
0
2
25
3
50
4
100
5
200
ET COSTS INCREASE AS PREFNREC INCREASES
35
ADAMLF. UPDATES. UPD/DELETE A1/E1
RECORD BUFFER:
CURRENT RECORD
FOR EVERY UPDATE
PREFSBL BUFFER SCANNED
TO SEE IF ISN IN
“YET-TO-BE-READ” RECORDS
( NOT CURRENT RECORD )
RECORD +1
RECORD +2
RECORD +3
RECORD +4
RECORD +5
:::
INCREASE IN PROGRAM CPU/ELAPSED TIME
NO INCREASE IN ADABAS TIMES (NEITHER CPU NOR DURATION)
? MEASURE CPU COSTS ?
TEST PROGRAM
36
ADAMLF. UPDATES. A1/E1 COSTS
DEFINE DATA LOCAL
1 #CPU-PGM-ALL (I4) INIT <0000> /* TIME IN 10 MS UNITS
1 #CPU-UPD-ALL (I4) INIT <0000> /* TIME IN 10 MS FOR UPDS
1 #CPU-UPD
(I4)
/* CPU TIME COUNTER
1 TEST VIEW OF SOME-FILE
: : :
END-DEFINE
VARY PREFNREC=
ST. SETTIME
ASSIGN #CPU-PGM-ALL = *CPU-TIME
RD1. READ
TEST PHYSICAL
RESULTS
: : :
ASSIGN #CPU-UPD = *CPU-TIME /*
UPDATE (RD1.)
ASSIGN #CPU-UPD
= *CPU-TIME - #CPU-UPD
ASSIGN #CPU-UPD-ALL = #CPU-UPD-ALL + #CPU-UPD
: : :
END-READ /*(RD1.)
ASSIGN #CPU-PGM-ALL = *CPU-TIME - #CPU-PGM-ALL
WRITE 'DA-TIME'
*TIME *TIMD(ST.) (EM=99:99:99'.'9)
WRITE 'DA-PGM-CPU' #CPU-PGM-ALL
37
WRITE 'DA-UPD-CPU' #CPU-UPD-ALL
ADAMLF. UPDATES. A1/E1 COSTS
7
SUM PROGRAM CPU TIMEs
6
5
TOTAL
TOTAL
3
TOTAL
TOTAL
4
2
1
0
A1
A1
ET
1
NREC: ----- 0 -----
A1
ET
2
---- 100 ----
A1
ET
3
---- 400 ----
ET
4
---- 800 ----
UPDATE COSTS INCREASE AS PREFNREC INCREASES
38
ADAMLF. UPDATES. A1/E1 VIA REREAD
FOR EVERY READ,
REREAD (L4) THEN UPDATE
NO INCREASE IN ET TIMES
NO INCREASE IN ADABAS TIMES
MAJOR INCREASE IN PROGRAM TIMES
MEASURE CPU COSTS
RESULTS
39
ADAMLF. UPDATES. A1/E1 VIA REREAD
20
SUM PROGRAM CPU TIMEs
18
16
14
12
10
TOTAL
4
TOTAL
6
TOTAL
TOTAL
8
2
A1
A1
A1
A1
0
1
NREC: ----- 0 -----
2
---- 100 ----
3
---- 400 ----
!! DON’T REREAD RECORD AND UPDATE !!
4
---- 800 ---40
ADAMLF. UPDATES. OUTSIDE OF LOOP
FOR EXAMPLE:
1. MLF READ
2. UPDATE/DELETE YET-TO-BE-READ-RECORD
3. IF THAT RECORD IS IN PREFSBL, IT WILL
BE REREAD BY ADAMLF (L1/L4)
FOR EXAMPLE:
READ MLF LOGICAL
GET isn-x/UPDATE/REC
(isn-x not yet read )
FNR
--0
0
241
241
241
241
CM MFF
-- ---CL
0
ET
0
A1
0
L1
0
L3 800
L4
0
RB:
CURRENT RECORD
RECORD +1
RECORD +2
RECORD +3
:::
COUNT
-----1
200
19,980
84 NOTE
28
19,980
!! CAN CAUSE OUT-OF-SEQUENCE FOR READ LOGICAL !!
41
SIZING MFF
42
SIZE MFF/PREFNREC. UPPER LIMIT
1. 2048
(IBL=32K/16 ADABAS V7)
2. 32K / (RECORD.SIZE)
(ADABAS V7)
3. ISN-QUANTITY FOR FIND (Sx) STATEMENTS
4. RECORDS PER LOOP (*COUNTER)
43
SIZE MFF/PREFNREC. VARY VALUE IF:
1. DATABASE USE: SHARED (
) OR DEDICATED (
2. ADAMLF. PROGRAM DELAY: MUCH (
3. ADAMLF. ARE UPDATES BEING DONE (
4. IS SEQUENCE READ PHYSICAL (
)?
) OR LITTLE (
)?
)?
) OR LOGICAL (
)?
44
SIZE MFF/PREFNREC.
1. (PERSONAL PHILOSOPHY):
GOAL OF 7 TO 10 IO’S PER COMMAND.
READ PHYSICAL, USE ADAREP, RECS/BLOCK X 10
READ LOGICAL, DETERMINE AVERAGE IO/CMD
2. = J / D
(ROUND UP TO INTEGER)
J = ELAPSED TIME OF JOB (IDEALLY READ SEQUENCE)
D = SUM OF ADABAS DURATION FOR SEQUENCE
3. START SMALL (5,10,20, . . . )
MONITOR CPU, ELAPSED TIMES.
! DO NOT INCREASE IF ELAPSED TIME DOES NOT INCREASE !
ANALYSIS REPORT for #1, #2
45
SIZE MFF/PREFNREC.
CA-APAS
MCIMLF: SUMMARIZE(SUBTOT=OFF)
ANALYSIS REPORT
MIN(TIME)
for #1, #2
MAX(TIME)
COUNT
(PF=N7)
SUM(TOTAL-IO) (PF=N7)
SUM(DURATION) (PF=N4.2)
SUM(ENQ-TIME) (PF=N4.2)
SUM(CMD-TIME) (PF=N4.2)
MEAN(RBL)
(PF=N3.1)
TO ENSURE ONLY 1
SEQUENCE IS
WHERE
FILE = 241 AND CMD = 'L2‘ MEASURED
* AND CID = X'02000101'
QUALIFY SEQUENCE
AND NAT-PROGRAM = 'TPGM'
* AND JOBNAME = 'THISJOB‘
PRINT TO ADHOC1
FOR EXAMPLE
46
INSIGHT-LINES=600;
SIZE MFF/PREFNREC. Eg. Method #1,#2
SUM
TOT
IO
SUM
DURAT
SECS
MIN
MAX
CMD
TIME
TIME
COUNT
EXAMPLE 1:
154931 163551 1,103,425 179,865 530.76
EXAMPLE 2:
160926 161841
4,460
6,604 61.07
SUM
ENQTIM
SECS
SUM
CMD
TIME
MEAN
RBL
939.96 70.14 184.0
0.02
1.11 204.0
EXAMPLE 1 (L2 SEQ):
EXAMPLE 2 (L3 SEQ):
1. IO / CMD = 180K / 1103K
= .16
10 / .16 = 60 (MFF)
1. IO / CMD = 6604 / 4460
= 1.5
10 / 1.5 = 7 (MFF)
2. ELAPSED TIME = 2780
TIME / DUR = 2780 / 531
= 6 (MFF)
2. ELAPSED TIME = 555
TIME / DUR = 555 / 61
= 10 (MFF)
47
SIZE MFF/PREFNREC. AGAIN #3
3. START SMALL (5,10,20, . . . )
MONITOR CPU, ELAPSED TIMES.
! DO NOT INCREASE IF ELAPSED TIME DOES NOT INCREASE !
PERFORMANCE (PGM ELAPSED TIME) =
ADABAS RESPONSE PGM PROCESS ADABAS
(CPU,IO,OVERLAP)
CALLS
PATHLENGTH TO/FROM
PGM-ADABAS
PGM DELAY
(CPU,IO,ETC.)
EXAMPLES
48
MINIMAL PGM DELAY
MINIMAL PATHLENGTH
SIZE MFF/PREFNREC.
60.0
PGM ELAPSED TIME
50.0
40.0
STOP
ENQTIME
DURAT
PGM.DELAY
PATHLENGTH
PROGRAM TIME
ADABAS TIME
30.0
20.0
10.0
0.0
NREC:
1
-0-
2
- 25 -
3
- 50 -
4
- 100
5
- 200 -
6
- 400 -
49
SIZE MFF/PREFNREC.
300
PGM DELAY: Lotsa MOVE stmts
MINIMAL PATHLENGTH
PGM ELAPSED TIME
250
PATHLENGTH
PROGRAM TIME
ADABAS TIME
200
STOP
150
100
50
0
NREC: 01
- 52 -
3
- 10
-
4
- 20
-
5
- 30
-
6
- 60
-
7
- 400
-
50
SIZE MFF/PREFNREC.
PGM DELAY: Lotsa MOVE stmts
PATHLENGTH: Different LPAR
PGM ELAPSED TIME
500
450
400
PATHLENGTH
PROGRAM TIME
ADABAS TIME
350
300
250
STOP
200
150
100
50
0
1
NREC: - 0 -
2
-5-
3
- 10 -
4
- 20 -
5
- 30 -
6
- 60 -
7
- 400 -
51
CONCERNS / ISSUES
52
CONCERNS. ADARUNs
ADARUN:
IF TOO SMALL:
LU=65K
152
NAB=
254,255
NISNHQ= 2 X PREFNREC
47
NH=
9 sub 1
NT=
performance
NC=
151
53
CONCERNS. LOOP LIMITS
EXAMPLE
RD1. READ FILE-X
:::
RD2. READ #MFF FILE-Y
THEDE = ‘A’ THRU ‘A’
LOOP
LOOP
*COUNTER(RD2.)=10 to 15
IF #MFF = 10,
0 TO 5 EXTRA RECORDS READ EACH TIME
IF #MFF = 100, 90 TO 85 EXTRA RECORDS READ EACH TIME
54
CONCERNS. LOOP EXITS
”ESCAPE . . .”
“READ view WITH REPOSITION BY . . . “
55
CONCERNS. RECORD SIZE
EXAMPLE: RECORD EXTRACTION JOB
LRECL = 10,000 (eg. PE, MU, LA, etc)
MAX #MFF = 3
USE OF COMMON VIEWS VIA PROGRAM, LDA, GDA.
EG. LDA DEFINES 2000 BYTES OF DATA
EG. PROGRAM WITH LDA USES ONLY 50 BYTES OF DATA
MAX #MFF = 16 WITH LDA
MAX #MFF = 640 WITHOUT LDA
NOTE IF VIEW SIZE CHANGES #MFF LIMIT CHANGES
56
CONCERNS. GENERALIZATIONS
AVOID:
1.
2.
3.
4.
COMMON PROCS
COMMON ADARUN PDS MEMBERS
USING ADAMLF PREFXFIL,PREFXCMD, EXCLUDES
COMMON VIEWS,LDA’S,GDA’S (LARGER RECS)
57
CONCERNS. MADIO
MADIO LIMITS THE NUMBER OF ADABAS CALLS
FOR EXAMPLE, MADIO = 5000
READ (9000) DA-FILE . . .
:::
! FAILS !
READ (9000) MULTI-FETCH 100 DA-FILE . . .
:::
! DOES NOT FAIL !
58
CONCERNS. DB PERFORMANCE
HIGH IO MULT-FETCH CALLS CAN IMPACT OTHER DB USERS.
ADAMLF (ASYNC) HIGH IO MLF CALLS CAN IMPACT OTHER USERS.
NOTE NATURAL NUCLEUS USES MLF AGAINST SYSTEM FILES:
FNAT – YES
FUSER – YES
FDIC - NOT AT THIS TIME
FSEC - NOT AT THIS TIME
? ADD ON PRODUCTS ?
? FASTPATH ?
SAMPLE PERF REPORT
59
CONCERNS. DB PERFORMANCE
DECLARE FETCH (A3) VALOF
IF COPT1
= 'M'
ELSEIF COPT1 = 'P'
ELSEIF COPT1 = 'O'
ELSE
IFEND;
RESULTIS
RESULTIS
RESULTIS
RESULTIS
CA-APAS
PART 1
'YES'
'YES'
'YES'
'
'
60
CONCERNS. DB PERFORMANCE
CA-APAS PART 2
MCIMLFS: SUMMARIZE(SUBTOT=ON GTT=NO)
COUNT
MEAN(ENQ-TIME) (PF=N2.5)
MEAN(DURATION) (PF=N2.5)
MEAN(CMD-TIME) (PF=N1.5)
MEAN(TOTAL-IO) (PF=N2.2)
MEAN(ECBS)
(PF=N2.2)
MEAN(DATA-IO)
(PF=N1.2)
MAX(FETCH)
(HD='MLF?')
BY JOBNAME
WHERE
*
OMIT FUSER/FNAT FILES
FILE NE 14 AND FILE NE 19
INTERVAL 15 MINUTES
PRINT TO SYSOUTX
INSIGHT-LINES 400;
MLF
61
CONCERNS. DB PERFORMANCE
CA-APAS
OPTION’s
“DRILL DOWN” OPTIONS
WHERE
*
*
*
JOBNAME = 'X'
TP-TRANS-NAME = ‘NATX’
CID = X’02000101’
BY
*
*
*
BY TP-TRANS-NAME
BY NATURAL-LOGON
BY NAT-PROGRAM
MAX(ISNLL-REPORTED) (PF=N3) *CAUTION
SAMPLE PERF REPORT
62
CONCERNS. DB PERFORMANCE
JOB NAME
CICS00BH
CICS000A
CICS000B
CICS000C
CICS000D
CICS000I
JOB00001
JOB00004
JOB00004
CMD
COUNT
27,097
29,512
15,820
8,594
9,252
1,525
3,516
7,079
8,030
MEAN
ENQTIME
SECS
0.00002
0.00002
0.00003
0.00002
0.00003
0.00071
0.01245
0.00002
0.00001
MEAN
DURAT
SECS
0.00032
0.00031
0.00082
0.00031
0.00035
0.00035
0.00046
0.00339
0.01434
MEAN
CMD
TIME
0.00012
0.00014
0.00048
0.00015
0.00014
0.00008
0.00007
0.00020
0.00893
DOCTOR’D REPORT
MEAN
TOT
IO
0.06
0.03
0.16
0.03
0.05
0.05
0.10
0.83
5.23
MEAN
PST
ECB
5.29
5.52
5.36
5.29
5.36
5.70
5.27
5.46
5.88
MEAN
DATA
IO MLF
0.03
0.01
0.32 YES
0.01
0.02
0.02
0.04
0.62
4.55 YES
BATCH JOB, NOTE MEAN-DATA-IO, ECB
CICS REGION, NEED TO DRILL DOWN TO TRANS, PROGRAM
63
ADABAS 2006, V8 NOTES
FOR DIRECT CALLS (NEW ACBX):
1. MULTI-FETCH BUFFER REPLACES ISN-BUFFER FOR HEADERS
2. 32K LIMIT REMOVED FROM RECORD BUFFER.
3. FOR EXAMPLE
64
DAS ENDE
65