Multi Fetch
Multi Fetch
IN AND OUT
OF NATURAL
Jim Poole 1
CONTENTS
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:
ADAMLF
PREFETC Exclude:
H PREFXFIL/
PREFXCMD
HISTOGRAM
L9’s
ADAMLF:
NOT USING
DIRECT PREFNREC
CALLS
PROGRAMS
3
OVERALL “?WHAT IS MULTI-FETCH ?”
RETURN MULTIPLE RECORDS ON ONE ADABAS CALL/CMD
READ/FIND
PROGRAM
MULTI-FETCH #MFF
:::
ADAMLF:
ADARUN PREF*=
::: ADA LINK
ADALNK NATMLF
ADAMLF 5
NOTE: PGM MLF HAS PRECEDENCE
QU
SYNTAX: ADAMLF IC
K
JCL: //DDCARD (ALL PREFACED BY ADARUN)
PREFETCH=YES / NO
PREFSBL=130000 * MLF BUFFER SIZE/SEQUENCE
PREFTBL=n*PREFSBL * n=# MLF SEQUENCES)
PREFNREC= * MAX RECS TO MLF
PREFICMD=cmd/cmd/cmd …
PREFIFIL=fnr,fnr,fnr …
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
QU
SYNTAX: NATMLF IC
K
AVAILABLE WITH NATURAL 4
READ/FIND MULTI-FETCH factor view-name . . .
FOR EXAMPLE:
8
SYNTAX: NATMLF RULES
1. READ LOGICAL. WORKS ON BOTH ASCENDING, DESCENDING.
A. READ/FIND (NNN) . . .
IF MFF > NNN THEN NNN USED
IF MFF < NNN THEN MFF USED (extra records may be read)
10
QU
SYNTAX: NATMLF. MULFETCH BUFFER IC
K
NTDS MULFETCH,nn
Or
GLOBALS DS=(MULFETCH,nn)
11
HOW IT WORKS. DIRECT CALLS ADABAS NUCLEUS
ADABAS
14
QU
HOW IT WORKS. ET/BT ADABAS NUCLEUS IC
K
CA-APAS
16
CPU COSTS OF
MULTI-FETCH
PROGRAM
5 RUNS EACH: CPU
MFF = 0
MFF = 10
MFF = 25
MFF = 50
MFF = 100 MFF= 0 10 25 50 100 1000
MFF = 1000
AVERAGES
SHOWN
NO ADABAS DELAY: ADABAS
NO IO, NO OTHER USERS CPU
NO PGM DELAY.
18
NATMLF PROCESSES “NORMAL CALLS TO ADABAS”
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 = 130,000
PREFSBL = 64K
1/2 = 65K
1/2 = 32K
EACH IB > 32K
EACH IB = 8K
EACH RB > 32K
EACH RB = 24K
! USE PREFNREC ! 21
ADAMLF “WARM UP” NOT USED IN NATMLF
22
ADAMLF “WARM UP” Example
PREFSBL = 65K, RBL = ( 65K / 2 ) X (3/4) = 24,573 PREFNREC = 200
CALL# IBL RBL ISNQ*
1 8,190 100 1 1 REC, NOTE RBL=100
2 8,190 3,071 30 1/8 RBL
3 8,190 3,071 30 1/8 RBL
4 8,190 12,286 122 1/2 RBL
5 8,190 24,573 200 MAX REACHED
6 8,190 24,573 200
7 8,190 24,573 200
8 8,190 24,573 200
9 8,190 24,573 200
10 8,190 24,573 200
*NOTE: CA-APAS
11 8,190 24,573 200
ISNQ = RECS
12 8,190 24,573 200 MLF’D
13 8,190 24,573 200
23
14 8,190 24,573 17 EOF
ADAMLF vs NATURAL MLF (overall)
ADAMLF NATURAL/PROGRAM MLF
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 )
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)
2.5
2
4
3
1.5
4
CPU (3% Diff)
0
1 2 3 4 5 6 7
3.5
6
3
5
2.5
?
4
CQ-TRHD DELAY
2
1.5
2
1
1
0.5
PROGRAM ADABAS 27
ADAMLF vs NATURAL MLF (Performance)
B. ADABAS DELAY
KEY: ADAMLF NATMLF
6
80
70
60
4
50
40
30
2
20
0
1 2 3 4 5 6
CPU (ADA 5% Better ?)
0
1 2 3 4 5 6
70
4
3.5
60
50
2.5
40
30
1.5
20
1
0.5
10
PROGRAM ADABAS 28
ADAMLF vs NATURAL MLF (Performance)
C. DELAY PGM/ADA
KEY: ADAMLF NATMLF
450 6
400
350
300
4
250
200
150
2
100
0
1 2 3 4 5
CPU (2% Diff)
0
1 2 3 4 5
25 70
60
20
50
15
40
30
10
20
10
PROGRAM ADABAS 29
MULTI-FETCH AND UPDATING
( ADAMLF )
30
ADAMLF. UPDATES. ET
REVIEW FOR EXAMPLE:
Lx RD1. READ TEST PHYSICAL
CB COP1=‘O’ IF AM-FIELD = 'AA'
THEN AM-FIELD := 'BB'
ET ELSE AM-FIELD := 'AA'
CB COP1=‘P’ END-IF
IB = 6b fnr/isn to UPDATE (RD1.)
put back on HQ 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 ETLIMIT = 10
33
MIN ADARUN NISNHQ=2 X PREFNREC
ADAMLF. UPDATES. ET COSTS
ET EVERY 1 A1
ADABAS AVG CPU TIME / ET
ET EVERY 10 A1
ET EVERY 100 A1
1 2 3 4 5
34
ADAMLF. UPDATES. ET COSTS
50
40
ET EVERY 10 A1, 20K ET’S
35
ET EVERY 100 A1, 2K ET’S
30
25
20
15
10
0
1 2 3 4 5
TEST PROGRAM 36
QU
ADAMLF. UPDATES. A1/E1 COSTS IC
K
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
ST. SETTIME VARY PREFNREC=
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
WRITE 'DA-UPD-CPU' #CPU-UPD-ALL 37
ADAMLF. UPDATES. A1/E1 COSTS
7
TOTAL
TOTAL
TOTAL
TOTAL
3
1 A1 A1 A1 A1
0
ET
1
ET
2
ET
3
ET
4
NREC: ----- 0 ----- ---- 100 ---- ---- 400 ---- ---- 800 ----
NO INCREASE IN ET TIMES
NO INCREASE IN ADABAS TIMES
RESULTS 39
ADAMLF. UPDATES. A1/E1 VIA REREAD
20
16
14
12
10
8
TOTAL
TOTAL
TOTAL
TOTAL
6
A1 A1 A1 A1
0
1 2 3 4
NREC: ----- 0 ----- ---- 100 ---- ---- 400 ---- ---- 800 ----
42
SIZE MFF/PREFNREC. UPPER LIMIT
1. 2048 (IBL=32K/16 ADABAS V7)
43
SIZE MFF/PREFNREC. VARY VALUE IF:
1. DATABASE USE: SHARED ( ) OR DEDICATED ( )?
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
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 !
EXAMPLES 48
SIZE MFF/PREFNREC. MINIMAL PGM DELAY
60.0
MINIMAL
PATHLENGTH
PGM ELAPSED TIME
50.0
40.0
STOP
ENQTIME
30.0
PATHLENGTHDURAT
PGM.DELAY
PROGRAM TIME
ADABAS TIME
20.0
10.0
0.0
1 2 3 4 5 6
NREC: -0- - 25 - - 50 - - 100 - 200 - - 400 - 49
SIZE MFF/PREFNREC. PGM DELAY: Lotsa MOVE stmts
300
MINIMAL PATHLENGTH
PGM ELAPSED TIME
250
PATHLENGTH
PROGRAM TIME
ADABAS TIME
200
STOP
150
100
50
0
1 2 3 4 5 6 7
NREC: 0 -5- - 10 - - 20 - - 30 - - 60 - - 400
50
-
SIZE MFF/PREFNREC. PGM DELAY: Lotsa MOVE stmts
PATHLENGTH: Different
LPAR
PGM ELAPSED TIME
500
450
400
PATHLENGTH
350
PROGRAM TIME
300
ADABAS TIME
250
200
STOP
150
100
50
0
1 2 3 4 5 6 7
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
54
CONCERNS. LOOP EXITS
”ESCAPE . . .”
55
CONCERNS. RECORD SIZE
EXAMPLE: RECORD EXTRACTION JOB
56
CONCERNS. GENERALIZATIONS
AVOID:
1. COMMON PROCS
2. COMMON ADARUN PDS MEMBERS
3. USING ADAMLF PREFXFIL,PREFXCMD, EXCLUDES
4. COMMON VIEWS,LDA’S,GDA’S (LARGER RECS)
57
CONCERNS. MADIO
MADIO LIMITS THE NUMBER OF ADABAS CALLS
! FAILS !
58
CONCERNS. DB PERFORMANCE
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) MLF
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; 61
CONCERNS. DB PERFORMANCE CA-APAS OPTION’s
WHERE
* JOBNAME = 'X'
* TP-TRANS-NAME = ‘NATX’
* CID = X’02000101’
BY
* BY TP-TRANS-NAME
* BY NATURAL-LOGON
* BY NAT-PROGRAM
64
DAS ENDE
65