Where does the RAP feature belongs to, and what does it do?
RAP is part of the CA Database Analyzer tool (DBA) and therefore does not need to be licensed separately.
It can be used to get important information about the quality of a currently used Randomizer Exit, and it shows the impact to the Randomizer-calculated segment distribution, if one or more of the relevant DBD parameters will be changed (Randomizer simulation).
How does it work?
RAP is reading a previously created sequential dataset, containing all root key values of an HDAM/PHDAM database (this dataset most easily can be created by running either Database Analyzer or Database Organizer-Unload, using execution option RAPKEYS=YES and allocating a sequential dataset with DD name RAPKEYS).
Based on the key values, RAP is simulating a segment distribution for this database, and creates several reports about the distribution quality of the currently used DBD parameters.
Additionally RAP allows changing one or more relevant of the DBD parameters to run another distribution simulation (without changing the DBD itself), indicating the impact of these changes on an additional set of reports with the same jobstep execution.
Which DBD parameters can be changed for simulations?
- number of RAA blocks => use execution option "#RAPBLOCKS=n"
- number of RAP fields per block => use execution option "#RAPS/BLOCK=n"
- Randomizer Exit name => use execution option "RANDOMIZER=name"
Note: An additional option "KEYLENGTH=n" being mentioned in the RAP documentation doesn't make sense and should not be used, because it is related to changing the root segment's key length, which would result in also changing all application programs using this database, which usually is not possible.
Which are the most important Reports from RAP?
A number of reports is written by RAP on every simulation step - some of them quite confusing and difficult to understand in respect of giving information regarding the quality of a segment distribution.
Therefore it is recommended to focus just on those three RAP reports which actually provide helpful performance information:
- ROOT DISTRIBUTION PLOT FOR ALL RAPS
ROOT DISTRIBUTION PLOT FOR ALL RAPS
THE HORIZONTAL AXIS IS THE PERCENTAGE OF ROOTS WHICH RANDOMIZED TO THE BLOCK RANGE ON THE VERTICAL AXIS.
THE VERTICAL AXIS IS THE ENTIRE SET OF ROOTS BROKEN INTO RANGES - THE LOW AND HIGH BLOCK NUMBER OF EACH RANGE IS PRINTED.
BLOCK NUMBER RANGE 1 2 3 4 5 6 7 8 9 10
LOW HIGH 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 %
0000001 - 0000069 ¦*********************** 23
0000070 - 0000138 ¦*************************** 27
0000139 - 0000207 ¦************************ 24
0000208 - 0000276 ¦************************** 26
How to be used?
Just look to the graphical Distribution Plot and check if the distribution of the root segments on the entire RAA is almost uniform.
The number of root segments per block should be similar for most RAA blocks.
You should avoid the settings when a distribution shows many roots for just specific ranges of blocks while other block ranges contain
only a few or no root segments; in such case the DBD should be changed accordingly.
2. BLOCK-ONLY ANALYSIS - ALL BLOCKS
BLOCK-ONLY ANALYSIS - ALL BLOCKS
MEAN : 1.670
VARIANCE : 834.158
WEIGHTED MEAN : 3,080.313
WEIGHTED MEAN IF BALANCED : 2,506.335
TOTAL NUMBER OF BLOCKS : 3,000
NUMBER OF USED BLOCKS : 2,011
NUMBER OF UNUSED BLOCKS : 989
How to be used?
Look to the "NUMBER OF UNUSED BLOCKS" in relation to "TOTAL NUMBER OF BLOCKS":
If a relative high number of blocks is unused, the RAA might be too large and should possibly be decreased;
if the number of unused blocks is low (relative number of used blocks is high), the RAA might be too small for further insertions
and should be increased.
(But keep in mind that your decision needs to consider how many changes (deletions, insertions) actually will be done against this
database by application programs.)
- BLOCK-ONLY ANALYSIS - USED BLOCKS
BLOCK-ONLY ANALYSIS - USED BLOCKS
MEAN : 500.000
VARIANCE : 544.500
NUMBER OF USED BLOCKS : 20
MINIMUM # ROOTS IN BLOCK : 484
MAXIMUM # ROOTS IN BLOCK : 517
How to be used?
Look to the "MINIMUM" and "MAXIMUM # ROOTS IN BLOCK" and compare them against the "MEAN" value (which shows the
number of root segments in each RAA block, if the disribution would be even on the entire RAA):
A small variance between the "MIN" and the "MAX" values around the "MEAN" value is an indication for a good Randomizer Exit distribution.
RAP job control Example
//RAP EXEC PGM=IDIRAP,REGION=4096K
//STEPLIB DD DISP=SHR,DSN=ca.imstools.CIMTLOAD
// DD DISP=SHR,DSN=ims.SDFSRESL
//DFSRESLB DD DISP=SHR,DSN=ims.SDFSRESL
//DBDLIB DD DISP=SHR,DSN=ims.DBDLIB
//RAPMSGS DD SYSOUT=*
//RAPRPTS DD SYSOUT=*
//RAPERROR DD SYSOUT=*
//RAPKEYS DD DSN=hlq.RAPKEYS,DISP=SHR => created by DBA or DBO Unload run
//RAPCTRL DD *
KEYDETAIL=NO, => YES will print additional details (optional)
DBDNAME=dbdname => uses existing DBD parameter (from load module)
* => no comma used after 'dbdname': end of options set #1
RANDOMIZER=DFSHDC30 => change to using this Randomizer Exit
* => no comma used after 'DFSHDC30': end of options set #2
#RAPBLOCKS=100 => change to RAA SIZE=100 blocks
* => no comma after '100': end of options set #3
#RAPS/BLOCK=2 => change to using 2 RAPS per block
* => no comma after '2': end of options set #4
RANDOMIZER=DFSHDC10, => change to all options which are separated by 'comma'
#RAPBLOCKS=100, (options set #5)
Although RAP simulations deliver valuable results about the quality of a Randomizer Exit as well as about the impact of changing distribution-relevant DBD parameters, it should always be remembered that one important HDAM/PHDAM DBD parameter is not part of the RAP simulations:
The BYTES parameter (4th sub-parameter of the RMNAME macro), controlling the number of bytes being available to store dependent segments on each RAA block, cannot be considered by RAP, because nothing is known about the number of dependent segments for this database and how many of them will be routed to the Overflow Area.
TECH TIP: How to tune HDAM/PHDAM databases using reports from CA Database Analyzer#