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 0The 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: 4SHARED RESOURCE POOL ID: BB SHARED RESOURCE POOL TYPE: D SUBPOOL ID: 2 SUBPOOL BUFFER SIZE: 8192 HIPERSPACE BUFFERS: 20 TOTAL BUFFERS IN SUBPOOL: 4SHARED RESOURCE POOL ID: FF SHARED RESOURCE POOL TYPE: D SUBPOOL ID: 1 SUBPOOL BUFFER SIZE: 8192 HIPERSPACE BUFFERS: 0 TOTAL BUFFERS IN SUBPOOL: 4SHARED 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:
where:Clock time = hh.mm.ss- 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.