Sequential Buffering Detail report
This report gives you detailed information about how SB was used for a particular SB buffer pool. A separate report is created for each SB buffer pool used by the application program.
Each report consists of three pages, A, B, and C. Summary information is contained on page A. More detailed information is found on pages B and C.
Each of the following topics contains an example of the relevant page (A, B or C) of the Sequential-Buffering-Detail report.
Fields on page A of the Sequential Buffering Detail report
The following example shows page A of the report.
//DFSSTAT STATISTICS FOR: JOB=OSBTC01 STEP=STEP1 . PGM=DFSDDLT0 PSB=PBVDSALR DATE=93.058 TIME=09.39
------------------------------------------------------------------------------------------------------------------------
*** SB DETAIL STATISTICS (PAGE A) ***
PSB PBVDSALR
DB DBOVLFPC
PCB
DB-PCB NBR 1
DSG-CB NBR 1
DD VLOSAM01
DB-ORG HDAM
DD-TYPE *PSDATA
NBR OF BUFSETS 4
COMPARE-OPTION IS ACTIVE
** NUMBER OF SEARCH REQUESTS ISSUED BY OSAM BH:
SEARCH 2,213
** NUMBER OF READ I/O:
TOTAL 1,338
RANDOM READ 686
SYNCHRONOUS SEQUENTIAL READ 555
OVERLAPPED SEQUENTIAL READ 97
** NUMBER OF BLOCKS READ:
TOTAL 7,206
RANDOM READ 686 PCT OF TOTAL: 9.51
SYNCHRONOUS SEQUENTIAL READ 5,550 PCT OF TOTAL: 77.01
OVERLAPPED SEQUENTIAL READ 970 PCT OF TOTAL: 13.46
** AVERAGE I/O WAIT TIMES (MILLIS):
RANDOM READ 15.70
SYNCHRONOUS SEQUENTIAL READ 18.03
OVERLAPPED SEQUENTIAL READ .26 You can use the first topic of this page to identify the SB buffer pool, database PCB, and DD name this report applies to. There can be more than one SB buffer pool (and, thus, more than one report) created for a particular database PCB and DD name. This can happen if the PCB is involved in a logical relationship.
This topic contains the following information:
- The PSB name.
- The DBD name (as coded in the PCB macro during PSBGEN).
- The PCB label (as coded in the PCB macro during PSBGEN).
- The relative number of the database PCB within the PSB.
- A unique identifier of the data set group control block within the database PCB. (You can use this number to uniquely identify the SB buffer pool when more than one SB buffer pool has been created for the same PCB and DD name.)
- The DD name.
- The type of database organization (HDAM, HIDAM, PHDAM, PHIDAM, or HISAM).
- The type of database data set. This can be one of three values:
- *INDX indicates this report applies to a data set used as an index.
- *PSDATA indicates this report applies to a data set containing data accessed according to its primary sequence.
- *SSDATA indicates this report applies to a data set containing data accessed according to a secondary index sequence or by crossing a logical relationship.
- The number of buffer sets in the SB buffer pool. The default number of buffer sets is four. You might have changed this default, however, with a SBPARM control statement or in the SB Initialization Exit routine.
- NUMBER OF SEARCH REQUESTS ISSUED BY OSAM BH
- This field shows you the number of OSAM random read I/O operations that would have been issued without using SB.
- NUMBER OF READ I/O
- These fields show you the number of read I/O operations that were
actually issued in this SB buffer pool. The fields tell you:
- The total number of OSAM read I/O operations
- The number of random reads
- The number of synchronous sequential reads
- The number of overlapped (asynchronous) sequential reads
You can use these fields to calculate the percentage of each of the three types of read I/O operations that were used for this database PCB and DD name. You can also subtract the total number of OSAM read I/O operations from the NUMBER OF SEARCH REQUESTS ISSUED BY OSAM BH field to determine the number of read I/O operations you saved by using SB.
- NUMBER OF BLOCKS READ
- These fields show you how many blocks were read by each type of
read I/O operation. The fields tell you:
- The total number of blocks read
- The number and percentage of blocks read by random reads
- The number and percentage of blocks read by synchronous sequential reads
- The number and percentage of blocks read by overlapped (asynchronous) sequential reads
A high percentage of blocks read with sequential reads indicates that SB probably helped the application program run faster, at least while processing this database PCB and data set.
A high percentage of blocks read with random reads, however, might indicate:- A large amount of random processing by the application program
- The OSAM data set associated with this database PCB needs reorganizing
A small percentage of blocks read at random sometimes indicates that you can reduce the number of buffer sets to save virtual storage space.
- AVERAGE I/O WAIT TIMES (MILLIS)
- These fields tell you the average I/O wait times for each of the
three types of read I/O operations. These times show the average time
the application program waited for a read I/O operation to complete
before it could process the data being read.
The times in these fields are in milliseconds. A millisecond is one thousandth of a second (in other words, 50 milliseconds equals 0.050 seconds).
These fields show you:- The average I/O wait time for random reads
- The average I/O wait time for synchronous sequential reads
- The average I/O wait time for overlapped (asynchronous) sequential reads
These times are only measured when SB is active or IMS is monitoring the I/O reference pattern.
Fields on page B of the Sequential Buffering Detail report
The following example shows page B of the report.
---------------------------------------------------------------------------------
*** SB DETAIL STATISTICS: REFERENCE STATISTICS (PAGE B) ***
** REFERENCES IN BUFFER-SETS:
RATIO .23
** REFERENCES IN RANDOM SRAN CBS:
RATIO .20
** RANDOM SRAN CBS WHICH HAVE BEEN CONVERTED:
NUMBER 0
PCT OF STOLEN RANDOM SRAN .00
***** DISTRIBUTION OF REFERENCES IN BUFFER-SETS *****
-----------------------------------------------------------------------
REFERENCE COUNT NBR OF OCCURRENCES PCT OF OCCURRENCES ACCUMUL. PCT
0 3 .46 .46
1 551 84.50 84.96
2 0 .00 84.96
3 0 .00 84.96
4 0 .00 84.96
5 0 .00 84.96
6 0 .00 84.96
7 0 .00 84.96
8 0 .00 84.96
9 4 .61 85.58
=> 10 94 14.41 100.00
***** DISTRIBUTION OF REFERENCES IN RANDOM SRAN CBS *****
-----------------------------------------------------------------------
REFERENCE COUNT NBR OF OCCURRENCES PCT OF OCCURRENCES ACCUMUL. PCT
0 0 .00 .00
1 0 .00 .00
2 1 100.00 100.00 This page can be used to evaluate the efficiency of the SB algorithm that monitored the I/O reference pattern for this SB buffer pool. By analyzing this page, you can answer these questions:
- How efficient were the decisions to issue sequential reads? This question can be answered by the REFERENCES IN BUFFER SETS field.
- How efficient were the decisions to issue random reads? This question can be answered by the REFERENCES IN RANDOM SRAN CBS field and the RANDOM SRAN CBS WHICH HAVE BEEN CONVERTED field.
The fields on Page B reflect buffering activity when SB was active. Buffering activity when IMS was only monitoring the I/O reference pattern is not included.
- REFERENCES IN BUFFER SETS
- This field shows you how many times blocks read with a sequential
read were referenced by the OSAM buffer handler. This ratio is calculated
as follows:
- The number of references in buffer sets divided by the number of blocks read by sequential read.
For example, a ratio of 1.00 means that, on the average, each block read by a sequential read was referenced once. A ratio of 0.50 means that, on the average, only half the blocks read by a sequential read were referenced once.
In general, a high ratio (for example, 0.85) shows you that the decisions to issue sequential reads were efficient and probably helped reduce the execution time of the application. A low ratio (for example, 0.30) shows you that the benefit of issuing sequential reads was smaller because many of the blocks read were never referenced.
- REFERENCES IN RANDOM SRAN CBS
- This field shows you the effectiveness of the decisions to issue
random reads. To understand what this ratio means, you must first
understand how the SB buffer handler uses control blocks to track
the I/O reference pattern.
The SB buffer handler uses a control block called SB range (SRAN) to track the I/O reference pattern within a range of 10 consecutive blocks. Each SRAN has a reference counter that shows how many times the OSAM buffer handler requested a block contained in the set of 10 blocks tracked by the SRAN.
There are two types of SRAN control blocks. One type, called a sequential SRAN, maintains counts for 10 consecutive blocks that have been read with a sequential read. A second type, called a random SRAN, maintains counts for 10 consecutive blocks that have been referenced in a random pattern. There is one sequential SRAN for each buffer set in an SB buffer pool; the number of random SRANs is twice the number of sequential SRANs.
The SRANs are chained together on a
use chain,
that is, they are chained together in the order in which they have been most or least recently used. Each type of SRAN has its own use chain. Most recently used SRANs are at the top of the use chain; least recently used SRANs are at the bottom. Whenever a SRAN is needed to track a set of blocks that are not currently being tracked, the SB buffer handler selects a SRAN from the bottom of the use chain. This is because ranges of consecutive blocks that have not been referenced recently are less likely to be referenced again in the near future.Each time a random SRAN is reused, the reference count maintained in the SRAN is recorded for later use. When the application program terminates, these reference counts are used to calculate the number in this field. The number is calculated as follows:- Ratio = X / (Y * 10)
- X
- Total number of random references in random SRANs (this number is usually equal or close to the number of random reads in the sets of blocks tracked by random SRANs)
- Y
- Total number of reused random SRANs
A low ratio (for example, 0.15) in this field means that on the average, the SB buffer handler correctly recognized random I/O reference patterns. A ratio of 0.15 means that the SB buffer handler issued an average of 1.5 random reads for blocks tracked by a random SRAN. Issuing 1.5 random reads for a set of 10 consecutive blocks is normally more efficient then issuing one sequential read for the 10 consecutive blocks.
A high ratio (for example, 0.50) in this field probably indicates that the SB buffer handler often mistook sequential reference patterns as random reference patterns. A ratio of 0.50 means that the SB buffer handler issued an average of 5 random reads for blocks tracked by a random SRAN. Issuing 5 random reads for a set of 10 consecutive blocks is normally less efficient than issuing one sequential read for the 10 consecutive blocks.
- RANDOM SRAN CBS WHICH HAVE BEEN CONVERTED
- These fields are another measurement of the SB buffer handler's
effectiveness in analyzing the I/O reference patterns.
Sometimes the SB buffer handler interprets a reference to a set of consecutive blocks as a random pattern, then, after some additional references, detects that the set of blocks is actually being referenced sequentially. In this case, the SB buffer handler first issues several random reads in a set of consecutive blocks and later issues a sequential read for the same set of blocks. When this occurs, the random SRAN that tracks the set of blocks is converted to a sequential SRAN. If the SB buffer handler had originally read the set of blocks with a sequential read, the cost of issuing several random reads would have been avoided.
The fields in this topic are:
- NUMBER
- This indicates how many times random SRANs were converted to sequential SRANs during the application program's execution.
- PCT OF STOLEN RANDOM SRAN
- The value in this field expresses the number of converted SRANs as a percentage of the number of times the SB buffer handler had to acquire a random SRAN from the use chain. A high percentage (for example, 40 percent) probably indicates that the SB buffer handler often mistook a sequential reference pattern as random reference pattern.
- DISTRIBUTION OF REFERENCES IN BUFFER SETS
- This table shows you more detailed information about the ratio
reported in the REFERENCES IN BUFFER SETS field.
For example, the REFERENCES IN BUFFER SETS field might indicate that 80 percent (0.80) of the blocks in the SB buffer sets were referenced. What does this mean? It could mean that 20 percent of the time none of the blocks in a buffer set were referenced. Or instead, it could mean that 100 percent of the time only 8 out of 10 blocks in the buffer sets were referenced. You can answer this question by analyzing this table.
The fields in this table are:
- REFERENCE COUNT
- This column lists the number of references to blocks in a buffer
set. A zero in this column means that no references were made to blocks
in a buffer set, a one means that one reference was made, and so on.
The
=> 10
in the last row of this column means that 10 or more references were made. - NBR OF OCCURRENCES
- This column shows you how many buffer sets were referenced the number of times shown in the REFERENCE COUNT column. For example, in the figure, the first number in this column is 3, which says that 3 buffer sets were never referenced. The second number says that 551 buffer sets were referenced once.
- PCT OF OCCURRENCES
- This column shows you the value in the NBR OF OCCURRENCES column expressed as a percentage of the number of times buffer sets were reused. For example, in the figure, the first number in this column is 0.46, which says that 0.46 percent of the reused buffer sets were never referenced. The second number says that 84.50 percent of the reused buffer sets were referenced once.
- ACCUMUL. PCT
- This column shows you the accumulated PCT OF OCCURRENCES from zero through the current reference count. For example, in the figure, the third number in this column is 84.96, which says that 84.96 percent of the reused buffer sets were referenced two or less times.
- DISTRIBUTION OF REFERENCES IN RANDOM SRAN CBS
- This table shows you more detailed information about the ratio
reported in the REFERENCES IN RANDOM SRAN CBS field. The table is
similar to the DISTRIBUTION OF REFERENCES IN BUFFER SETS table, except
that it shows information about references tracked by random SRAN
control blocks.
- REFERENCE COUNT
- This column lists the number of references to blocks tracked by
random SRANs. A zero in this column means that no references were
made and, therefore, no random reads were issued for blocks tracked
by a random SRAN. A
one
means that one reference was made to blocks tracked by a random SRAN (on the average, one reference for every tenth block tracked by the random SRAN). - NBR OF OCCURRENCES
- This column shows you how many random SRANs were referenced the number of times shown in the REFERENCE COUNT column.
- PCT OF OCCURRENCES
- This column shows you the NBR OF OCCURRENCES expressed as a percentage of the number of times that random SRANs were reused.
- ACCUMUL. PCT
- This column shows you the accumulated PCT OF OCCURRENCES from zero through the current reference count.
Fields on page C of the Sequential Buffering Detail report
The following example shows page C of the report.
//DFSSTAT STATISTICS FOR: JOB=OSBTC01 STEP=STEP1 . PGM=DFSDDLT0 PSB=PBVDSALR DATE=93.058 TIME=09.39
----------------------------------------------------------------------------------------------------------------
*** SB DETAIL STATISTICS: INTERNAL COUNTERS AND VALUES (PAGE C) ***
** DEACTIVATIONS:
NBR OF SB-DEACTIVATION 1
NBR OF MONITORING-DEACTIVATION 0
** RESULTS OF EVALUATION OF SEQUENTIALITY:
NBR POSITIVE RESULTS 3
NBR NEGATIVE RESULTS 1
** RESULTS OF EVALUATION OF ACTIVITY RATE:
NBR POSITIVE RESULTS 4
NBR NEGATIVE RESULTS 0
** NBR RANDOM READ:
DURING SEQUENTIAL BUFFERING PHASES 27
DURING "MONITORING-ONLY" PHASES 659
WHILE NOT MONITORING REFERENCE PATTERN 0
** NBR RANDOM READS WITH SEQUENTIAL REFERENCE PATTERN:
ACCESS TO INVALID BUFFERS 25
ACCESS AT DATA SET END 2
** NBR OF BUFFERING POSITIONS: 2,213
** INTERNAL SB-ALGORITHM VALUES:
SDSGBPTR: BLOCKS PER TRACK 31
SDSGNBRB: BLOCKS PER BUFSET 10
SDSGSCST: RELATIVE SEQ I/O COSTS 1.36
SDSGSINB: SIZE OF NEIGHBORHOOD 2
SDSGTHR1: THRESHOLD CURRENT+1 2
SDSGTHR2: THRESHOLD OVERLAP 3
SDSGTHR3: THRESHOLD NEIGBH 11 Page C consists of the following topics:
- DEACTIVATIONS
- The fields in this topic are:
- NBR OF SB DEACTIVATION
- This field shows how many times SB was deactivated.
- NBR OF MONITORING DEACTIVATION
- This field shows how many times I/O reference monitoring was deactivated.
Deactivation of I/O reference monitoring can occur for one of two reasons:
- If several consecutive periodical evaluations of the buffering process show that it is not worthwhile to use SB
- If you set a limit on the SB buffer space by specifying the MAXSB keyword in the SBONLINE control statement. The use of SB is restricted when this limit is reached.
- RESULTS OF EVALUATION OF SEQUENTIALITY
- This topic and the next topic, RESULTS OF EVALUATION OF ACTIVITY
RATE, help explain why SB was deactivated (or was not activated) during
the application program's execution.
The decision to activate and deactivate SB is made by a periodical evaluation of the buffering process for a particular DB-PCB/DSG control block pair. The evaluation is based on the following criteria:
- Sequentiality
- Activity rate
If the results for both tests are positive (in other words, if the results of both tests recommend use of SB), IMS will activate SB (if not active) or will continue to use SB. If at least one of the test results is negative, then IMS will deactivate SB (if active) or will continue not to use SB. After several decisions not to use SB, IMS can also deactivate monitoring of the I/O reference pattern.
The fields in this topic are:
- NBR POSITIVE RESULTS
- This field shows you how many times periodical evaluation of the I/O reference pattern detected enough of a sequential reference pattern to warrant use of SB.
- NBR NEGATIVE RESULTS
- This field shows you how many times periodical evaluation of the I/O reference pattern did not detect enough of a sequential reference pattern to warrant use of SB.
- RESULTS OF EVALUATION OF ACTIVITY RATE
- The fields in this topic are:
- NBR POSITIVE RESULTS
- This shows you how many times periodical evaluation detected an I/O activity rate high enough to warrant use of SB.
- NBR NEGATIVE RESULTS
- This shows how many times periodical evaluation determined that the I/O activity rate was not high enough to warrant use of SB.
- NBR RANDOM READ
- This topic shows you how many random reads were issued during
each of the following types of buffering phases:
- DURING SEQUENTIAL BUFFERING PHASES
- This field shows you how many random reads were issued while SB was active.
- DURING
MONITORING ONLY
PHASES - This field shows you how many random reads were issued while SB was not active and IMS was still monitoring the I/O reference pattern.
- WHILE NOT MONITORING REFERENCE PATTERN
- This field shows you how many random reads were issued while SB was not active and IMS was not monitoring the I/O reference pattern.
- NBR RANDOM READS WITH SEQUENTIAL REFERENCE PATTERN
- This topic shows you how many times random reads were issued even
though the I/O reference pattern was sequential. These counters are
updated only when SB is active. The fields in this topic are:
- ACCESS TO INVALID BUFFERS
- This field shows how many times a random read was issued because
the contents of an SB buffer was invalid and could not be used. Some
possible reasons for marking an SB buffer invalid are:
- Your IMS system is running
in a block-level sharing environment. In a block-level sharing environment,
more than one IMS system can
read from and write to the same database. For example, if IMS system
A
reads a block into a buffer and IMS systemB
updates that block while the block is still in systemA's
buffer, systemA's
buffer will be marked as invalid. - The activation and deactivation of SB during periodical evaluations marks SB buffers as invalid.
- A block was being written by another online application in the same IMS subsystem at the same time the SB buffer handler was reading it.
- The SB buffer was marked invalid because of I/O errors.
- Your IMS system is running
in a block-level sharing environment. In a block-level sharing environment,
more than one IMS system can
read from and write to the same database. For example, if IMS system
- ACCESS AT DATA SET END
- This field shows how many times the SB buffer handler issued a random read because the set of 10 blocks containing the referenced block was not completely formatted. SB never issues a sequential read at the end of a data set if the last set of consecutive blocks is not completely formatted.
- NBR OF BUFFERING POSITIONS
- This field shows how many times the SB buffer handler assumed
the application program issued a DL/I call requesting a new position
in the database. For example, most GU calls qualified on the key field
of a root segment other than the current root segment will cause this
counter to be incremented. This counter is maintained only while SB
is active and IMS is monitoring
the I/O reference pattern.
A high value in this field can indicate a large amount of logical random processing by the application. If other fields seem to indicate that the application did not benefit from SB, this field can explain why.
- INTERNAL SB ALGORITHM VALUES
- This topic shows the values of internal counters. They are included to help IMS development during SB problem determination.