Fields in the VSAM-Buffer-Pool report

The following example is a sample of a VSAM-Buffer-Pool report.

             V S A M   B U F F E R   P O O L
                                                                                FIX INDEX/BLOCK/DATA           N/Y/N
                                                                                SHARED RESOURCE POOL ID        VPL/1
                                                                                SHARED RESOURCE POOL TYPE          D
                                                                                SUBPOOL ID                         1
                                                                                SUBPOOL BUFFER SIZE             2048
                                                                                NUMBER  HIPERSPACE BUFFERS         0
                                                                                TOTAL BUFFERS IN SUBPOOL           4
                                                                          17:08:15           17:10:16
                                                                    START TRACE        END   TRACE        DIFFERENCE

    NUMBER OF RETRIEVE BY RBA CALLS RECEIVED BY BUF HNDLR                0                  0                  0
    NUMBER OF RETRIEVE BY KEY CALLS                                      0                  0                  0
    NUMBER OF LOGICAL RECORDS INSERTED INTO ESDS                         0                  0                  0
    NUMBER OF LOGICAL RECORDS INSERTED INTO KSDS                         0                  0                  0
    NUMBER OF LOGICAL RECORDS ALTERED IN THIS SUBPOOL                    0                  0                  0
    NUMBER OF TIMES BACKGROUND WRITE FUNCTION INVOKED                    0                  0                  0
    NUMBER OF SYNCHRONIZATION CALLS RECEIVED                             18566              27923              9357
    NUMBER OF WRITE ERROR BUFFERS CURRENTLY IN THE SUBPOOL               0                  0                  0
    LARGEST NUMBER OF WRITE ERRORS IN THE SUBPOOL                        0                  0                  0
    NUMBER OF VSAM GET CALLS ISSUED                                      0                  0                  0
    NUMBER OF VSAM SCHBFR CALLS ISSUED                                   0                  0                  0
    NUMBER OF TIMES CONT INT REQUESTED ALREADY IN POOL                   229956             349375             119419
    NUMBER OF CONTR INT READ FROM EXTERNAL STORAGE                       1078               1229               151
    NUMBER OF VSAM WRITES INITIATED BY IMS                               33                 64                 31
    NUMBER OF VSAM WRITES TO MAKE SPACE IN THE POOL                      0                  0                  0
    NUMBER OF VSAM READS FROM HIPERSPACE BUFFERS                         0                  0                  0
    NUMBER OF VSAM WRITES FROM HIPERSPACE BUFFERS                        0                  0                  0
    NUMBER OF FAILED VSAM READS FROM HIPERSPACE BUFFERS                  0                  0                  0
    NUMBER OF FAILED VSAM WRITES FROM HIPERSPACE BUFFERS                 0                  0                  0

The meaning of the various fields in the report is as follows:

FIX INDEX/BLOCK/DATA
This field indicates the fix options for the index buffers/data buffer prefix/data buffers for this subpool.
SHARED RESOURCE POOL ID
This field is a four character, VSAM local-shared-resource-pool ID provided at subpool definition time. This ID is specified in the DFSVSAMP or IMS.PROCLIB data set control statements.
SHARED RESOURCE POOL TYPE
This field indicates whether this subpool contains index (I) or data (D) buffers.
SUBPOOL ID
This field describes the subpool ID. A unique subpool ID is assigned for each different database buffer size in each VSAM local shared resource pool you specify in the DFSVSAMP or IMS.PROCLIB data set control statements.
SUBPOOL BUFFER SIZE
This field describes the size, in bytes, of buffers in this subpool. You can specify buffers of different sizes. A subpool contains all buffers of the same size. All subpools grouped together make up the buffer pool. Buffer size is specified by you in the control statements for the DFSVSAMP or IMS.PROCLIB data sets. For example, suppose you specified:
//DFSVSAMP DD input for VSAM and OSAM buffers and options
⋮
POOLID=BB
VSRBF=4096,4,D,HSR,10
VSRBF=8192,4,D,HSO,20
POOLID=FF
VSRBF=4096,4,I
VSRBF=8192,4,D
⋮
/*

This gives you four subpools and the four VSAM-Buffer-Pool reports displayed in the following examples. The headings in each report display as shown in the examples.

SHARED RESOURCE POOL ID: 				BB
SHARED RESOURCE POOL TYPE:				 D
SUBPOOL ID: 										 1
SUBPOOL BUFFER SIZE: 					4096
HIPERSPACE BUFFERS: 					 	10
TOTAL BUFFERS IN SUBPOOL: 				 4
SHARED RESOURCE POOL ID: 				BB
SHARED RESOURCE POOL TYPE:				 D
SUBPOOL ID: 										 2
SUBPOOL BUFFER SIZE: 					8192
HIPERSPACE BUFFERS: 					 	20
TOTAL BUFFERS IN SUBPOOL: 				 4
SHARED RESOURCE POOL ID: 				FF
SHARED RESOURCE POOL TYPE:				 D
SUBPOOL ID: 										 1
SUBPOOL BUFFER SIZE: 					8192
HIPERSPACE BUFFERS: 					 	 0
TOTAL BUFFERS IN SUBPOOL: 				 4
SHARED RESOURCE POOL ID: 				FF
SHARED RESOURCE POOL TYPE:				 I
SUBPOOL ID: 										 2
SUBPOOL BUFFER SIZE: 					4096
HIPERSPACE BUFFERS: 					 	 0
TOTAL BUFFERS IN SUBPOOL: 				 4
NUMBER OF HIPERSPACE BUFFERS
This field indicates the number of hiperspace buffers specified at subpool definition time.
TOTAL BUFFERS IN SUBPOOL
This field describes how many buffers are in the specified subpool.
START TRACE, END TRACE, and DIFFERENCE
The start trace and end trace fields tell you the time the DB Monitor program was last started and stopped. The time is generated by the time-of-day clock. Clock times are read as follows:
Clock time = hh.mm.ss
where:
hh
Hours 0 through 23
mm
Minutes
ss
Seconds

If the DB Monitor program was on during an entire batch run, the start and end trace times are when the batch run started and stopped. If the DB Monitor program was turned on and off more than once in the same batch run, the start and end trace times are when the monitor was last started and stopped.

The numbers under the start and end trace fields are cumulative numbers for the entire batch run. If the monitor was only turned on and off once, the start trace number is zero. If the monitor was turned on and off more than once, the start trace numbers are the cumulative numbers when the monitor was last turned on; the stop trace numbers are the cumulative numbers when the monitor was last turned off.

The difference column describes the difference between the cumulative numbers in the start and end trace fields. If the monitor was only turned on and off once, the difference column contains the same numbers as the end trace column.

NUMBER OF RETRIEVE BY RBA CALLS
This field describes how many retrieve by relative byte address (RBA) calls were issued for this subpool. Retrieve by RBA calls are calls issued internally by DL/I. One retrieve by RBA call is issued for each direct-address pointer that must be followed in searching for a segment. For example, a GN call for a dependent segment in an HDAM or PHDAM database uses a series of RBA calls to search for the dependent segment, one call for each direct-address pointer it follows.

If you want to know the exact sequence of a search when a retrieve by RBA call is used, you can record the sequence by turning on the buffer handler trace and using a SNAP call to see the trace records. You can turn on the buffer handler trace using the DL/I= operand on the OPTIONS statement for the DFSVSAMP or DFSVSMnn data set. The SNAP call can be issued from the application program or by using the DFSDDLT0 test program.

One call from an application program can generate more than one retrieve by RBA call. The retrieve by RBA call might or might not require an I/O operation. Because the number in this field does not reflect the number of I/O operations to access a segment, do not use it to judge VSAM performance.

NUMBER OF RETRIEVE BY KEY CALLS
This field describes how many retrieve by key calls were issued for this subpool. Retrieve by key calls are calls issued internally by DL/I. The calls are issued to search a KSDS using a key as a qualification (where key is equal to or greater than X). For example, a GU call for a root segment in a HIDAM database causes DL/I to issue a retrieve by key call to access the index segment pointing to the requested root segment.

One call from an application program can generate more than one retrieve by key calls. The retrieve by key calls might or might not require an I/O operation. Because the number in this field does not reflect the number of I/O operations to access a segment, do not be use it to judge VSAM performance.

NUMBER OF LOGICAL RECORDS INSERTED INTO ESDS
This field describes how many of the logical records in your ESDS that were previously empty now contain segments. When a dependent segment is inserted into an ESDS in a HISAM or HIDAM database, the segment might not fit into a logical record that already contains other segments. In this case, the segment is put into a new ESDS logical record. When a dependent segment is inserted into a logical record in an ESDS in a HISAM database, other segments in the same logical might need to be shifted into a new ESDS logical record to make room for the segment being inserted.

Look at this field from one report to the next. It helps you determine when you are running out of logical records in the primary space you have allocated. It is best to avoid using logical records from secondary space because this space is probably not close to the primary space. The distance between the two areas of space might cause extra seek time and therefore poor performance. In general, it is best to reorganize your database before you need to use secondary space.

NUMBER OF LOGICAL RECORDS INSERTED INTO KSDS
This field describes how many of the logical records in your KSDS that were previously empty now contain segments. HISAM databases use a new logical record when a root segment is inserted. HIDAM index databases use a new logical record for the index segment created when a root segment is inserted. Secondary index databases use a new logical record when a new pointer segment is inserted.

Look at this field from one report to the next. It helps you determine when you are running out of logical records in the primary space you have allocated. It is best to avoid using logical records from secondary space because this space is probably not close to the primary space. The distance between the two areas of space might cause extra seek time and therefore poor performance. In general, it is best to reorganize your database before you need to use secondary space.

NUMBER OF LOGICAL RECORDS ALTERED IN THIS SUBPOOL
This field describes how many logical records, while in the buffer pool, were marked as altered. When a segment is inserted or replaced in a logical record, the logical record in the buffer is marked as altered until it is written back to the database.
NUMBER OF TIMES BACKGROUND WRITE FUNCTION INVOKED
If you have specified use of the background write function, this field tells how many times the function was used. The background write function, at intervals, writes buffers containing modified data back to the database. It does this so buffers are available for use when an application program needs them. Without background write, if an application program wants to read data into a buffer that already contains modified data, the application program has to wait while the contents of the buffer are written back to the database. The number of times background write is invoked is the same on each subpool report produced, during a given execution of the monitor, for a given local shared resource pool. Once invoked, the background write function writes buffers from all subpools within a local shared resource pool.

Background write is specified in the BGWRT= operand of the OPTIONS statement for the DFSVSAMP or DFSVSMnn data set.

NUMBER OF SYNCHRONIZATION CALLS RECEIVED
This field describes how many requests were made to write all altered buffers in the local shared resource pool while the monitor was on. CHKP and STAT calls are typical requestors of this.
NUMBER OF PERM WRT ERROR BUFFS NOW IN THE SUBPOOL
This field describes how many buffers are currently frozen in storage because a permanent I/O error occurred when writing them to the database. When a VSAM write operation results in a permanent I/O error, the affected buffers are frozen in storage until the data set is closed or, in the online system, until the system is shut down. Once the data set is closed or the system shut down, the buffers are written to the log and the number in this field returns to zero.

Ensure that the operator performed database recovery of the affected data set before you ever receive this report.

LARGEST NUMB OF PERM ERR BUFFS EVER IN THE SUBPOOL
This field describes how many buffers were frozen in storage when the condition described in the previous field occurred.
NUMBER OF VSAM GET CALLS ISSUED
This field describes how many times VSAM GET calls were issued. VSAM GET calls are calls issued internally by DL/I. The GET call might be satisfied by data in the buffer pool or it might require that data be read into the buffer pool. Because the number in this field does not reflect the number of I/O operations required to access a segment, do not use it to judge VSAM performance.
NUMBER OF VSAM SCHBFR CALLS ISSUED
This field describes how many times the HD space management routine issued calls to search for space in which to insert segments.

If, from one monitor report to the next, the number in this field is increasing, it means that space for storing new segments is not available in the most desirable location. Eventually, this means you must reorganize your database to improve performance. In reorganizing, pay special attention to the operands affecting database space (the bytes operand in the RMNAME= keyword in the DBD statement and the fbff and fspf operands in the FRSPC= keyword in the DATA SET statement).

NUMBER OF TIMES CONT INT REQUESTED ALREADY IN POOL
This field describes how many times a logical record was found in a CI that was already in the buffers. When this occurs, no I/O operations are required to access the desired segments.

If you are trying to improve performance, increase the number of buffers you have allocated. If you increase the number of buffers, you can monitor this field to see if the number in it increases, which indicates improved performance.

NUMBER OF CONTR INT READ FROM EXTERNAL STORAGE
This field describes how many times a logical record was not found in a CI that was already in the buffers. When this occurs, an I/O operation is required to read the CI containing the logical record into the buffer pool. Because performance is always better when fewer I/O operations are performed, you might want to increase the number of buffers you have specified to see how that affects the number in this field. Specifying more buffers keeps more CIs (and therefore logical records) in the buffer pool. There is a break-even point in this process, however, where too many buffers are specified, and it takes longer to search and maintain the buffers than it takes to read a CI into the buffer.

The number of buffers is specified in the control statements for the DFSVSAMP or DFSVSMnn data sets.

NUMBER OF VSAM WRITES INITIATED BY IMS
This field describes the number of times DL/I issued a write request to write data to the database. Write operations are issued when:
  • A data set is closed. Database buffers containing data that has been altered by the data set being closed are written to the database.
  • Abnormal termination occurs during application program processing. Database buffers containing data that has been altered are written to the database.
  • The background write function is invoked. Selected database buffers containing data that has been altered are written to the database.
  • A checkpoint call is issued. All altered database buffers are written to the database.
NUMBER OF VSAM WRITES TO MAKE SPACE IN THE POOL
This field describes how many times a CI had to be read into a buffer containing a logical record with altered data. When this happens, the buffer (because it contains altered data) has to be written back to the database before the new CI can be read into it. This means the application program has to wait while the write operation takes place.

For best performance, ensure that the number in this field is close to zero. This can generally be achieved by turning on the background write function during batch processing and adjusting the number of buffers allocated.

NUMBER OF VSAM READS FROM HIPERSPACE BUFFERS
This field describes the total number of successful VSAM reads (MOVEPAGE and NON-MOVEPAGE) from the hiperspace buffers.
NUMBER OF VSAM WRITES FROM HIPERSPACE BUFFERS
This field describes the total number of successful VSAM writes (MOVEPAGE and NON-MOVEPAGE) to the hiperspace buffers.
NUMBER OF FAILED VSAM READS FROM HIPERSPACE BUFFERS
This field describes the number of times that a VSAM read request from hiperspace failed, resulting in a read from DASD.
NUMBER OF FAILED VSAM WRITES FROM HIPERSPACE BUFFERS
This field describes the number of times that a VSAM WRITE request to hiperspace failed, resulting in a write to DASD.