Fields in the VSAM-Statistics report

The following example is a sample of a VSAM-Statistics report.

IMS MONITOR   ****VSAM STATISTICS****     TRACE START 1989 076  12:42:54     TRACE STOP  1989 076  12:43:07  PAGE  0012

                  DL/I   VSAM     RET    RET   ISRT   ISRT    BFR    BKG    SYN                                USR    NUR
PCBNAME  DDNAME   FUNC  IWAITS    RBA    KEY   ESDS   KSDS    ALT    WTS    PTS   GETS  SCHBFR FOUND   READS   WTS    WTS
_______  ______   ____   _____    ___    ___   ____   ____    ___    ___    ___   ____  ______ _____   _____   ___    ___
DLVNTZ02 DBHVSAM2 STAT   1       1.00   0.00   0.00   0.00   1.00   0.00   1.00   1.00   0.00   1.00   0.00   1.00   0.00
         DD TOTAL
         __ _____        1       1.00   0.00   0.00   0.00   1.00   0.00   1.00   1.00   0.00   1.00   0.00   1.00   0.00
         HIDAM    STAT   4     307.25  36.50   0.50   0.00  35.00   0.00   0.25   120.25 0.00 157.00   0.25   0.75   0.00
         DD TOTAL
         __ _____        4     307.25  36.50   0.50   0.00  35.00   0.00   0.25 120.25   0.00 157.00   0.25   0.75   0.00
         XDLBT04I GU     2      15.00   4.50   0.00   0.00   0.00   0.00   0.00  17.50   0.00  21.50   1.00   0.00   0.00
         DD TOTAL
         __ _____        2      15.00   4.50   0.00   0.00   0.00   0.00   0.00  17.50   0.00  21.50   1.00   0.00   0.00
PCB TOTAL
___ _____                7     180.00  22.14   0.28   0.00  20.14   0.00   0.28  73.85   0.00  96.00   0.42   0.57   0.00
DLVNTZX2 HIDAM    GN     1      15.00   3.00   0.00   0.00   0.00   0.00   0.00  18.00   0.00  20.00   1.00   0.00   0.00
                  GU     1       1.00   0.00   0.00   0.00   0.00   0.00   0.00   1.00   0.00   0.00   1.00   0.00   0.00
         DD TOTAL
         __ _____        2       8.00   1.50   0.00   0.00   0.00   0.00   0.00   9.50   0.00  10.00   1.00   0.00   0.00
         DBHVSAM1 GU     8       0.00   0.12  12.75 520.00   7.50   0.00   0.00   0.12   0.00   0.00   0.87   0.00   0.00
         DD TOTAL
         __ _____        8       0.00   0.12  12.75 520.00   7.50   0.00   0.00   0.12   0.00   0.00   0.87   0.00   0.00
         XDLBT04I GU     6       0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   1.00   0.00   0.00
         DD TOTAL
         __ _____        6       0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00   1.00   0.00   0.00
         DBHVSAM2 GU     3       0.66   0.00   0.00   0.00   0.00   0.00   0.00   0.66   0.00   0.00   1.00   0.00   0.00
         DD TOTAL
         __ _____        3       0.66   0.00   0.00   0.00   0.00   0.00   0.00   0.66   0.00   0.00   1.00   0.00   0.00
PCB TOTAL
___ _____                19      0.94   0.21   5.36 482.10   3.15   0.00   0.00   1.15   0.00   1.05   0.94   0.00   0.00
BATCH TOTAL
_____ _____              26     49.15   6.11   3.84  83.07   3.11   0.00   0.07  20.73   0.00  26.61   0.80   0.15   0.00

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

TRACE START and TRACE STOP
The trace start and trace stop fields tell you the time when 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 was on during an entire batch run, the trace start and trace stop time is when the batch run started and stopped. If the DB Monitor was turned on and off more than once in the same batch run, the trace start and trace stop time is when the monitor was last started and stopped.

PCBNAME
This field describes the name of the PCB the report is providing information about. Remember that each application program has one or more PCBs. This field can only be used to identify which application program the report is providing information about if PCB names are unique to application programs.
DDNAME
This field describes the name of the data set the application program is using. Within one report, an application program (PCB) can access more than one data set. The statistics compiled are listed separately for each data set.
DL/I FUNC
This field describes the type of DL/I calls the application program issued.
VSAM IWAITS
This field describes, by type of DL/I call against a specific data set, the number of times IMS had to wait before processing could proceed. When IMS has to wait, it is almost always waiting for an I/O operation to take place, that is, data is being either read from the database to the buffer or written from the buffer back to the database.

The numbers in each column under all remaining fields in the report are averages. They tell the average number of times an activity occurred rather than the specific number of times. Averages are for waits. These numbers are truncated. For example, a value of 0.019 is printed as 0.01.

RET RBA
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.

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.

RET KEY
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 or PHIDAM 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 use it to judge VSAM performance.

ISRT 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, HIDAM or PHIDAM 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 record 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.

ISRT 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 and PHIDAM index databases use a new logical record for the index segment created when a root 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.

BFR ALT
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.
BKG WTS
If you have specified use of the background write function, this field tells how many times the function was used. Background write, 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 was invoked is the same on each subpool report produced during a given execution of the monitor. This is because, once involved, background write writes buffers from all subpools.

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

SYN PTS
This field describes how many times checkpoint calls were issued in DL/I programs while the monitor was on.
GETS
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.
SCHBFR
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, 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).

FOUND
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.

READS
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.

USR WTS
This field, which indicates user writes, 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.
NUR WTS
This field, which indicates nonuser writes, tells 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.

SCRS
This field describes the total number of successful VSAM reads (MOVEPAGE and NON-MOVEPAGE) from hiperspace buffers.
SCWS
This field describes the total number of successful VSAM writes (MOVEPAGE and NON-MOVEPAGE) to hiperspace buffers.
SCRF
This field describes the number of times that a VSAM read request from hiperspace failed, resulting in a read from DASD.
SCWF
This field describes the number of times that a VSAM write request to hiperspace failed, resulting in a write to DASD.
DD TOTAL
This field describes, for a given data set, the overall average number of times an activity occurred (except for the VSAM CALLS field, which tells total number of times).
PCB TOTAL
This field describes, for a given PCB, the overall average number of times an activity occurred (except for the VSAM CALLS field, which tells total number of times).
BATCH TOTAL
This field describes, for the time the monitor was running, the overall average number of times an activity occurred (except for the VSAM CALLS field, which tells total number of times).