Specifying buffers
Specify the number of buffers and their size when the system is initialized.
Your specifications, which are given to the system in the form of control statements, are put in the:
- DFSVSAMP data set in batch, utility.
- IMS.PROCLIB data set with the member name DFSVSMnn in IMS DCCTL and DBCTL environments.
The following example shows the necessary control statements specifications:
- Four 2048-byte buffers for OSAM
- Four 2048-byte buffers and fifteen 1024-byte buffers for VSAM
//DFSVSAMP DD *
⋮
VSRBF=2048,4
VSRBF=1024,15
IOBF=(2048,4)
/*
z/OS® DFSMS calculates the optimum size for the CIs of the index component of VSAM data sets. If DFSMS determines that the CI size needs to be increased, DFSMS overrides the CI size specified in the IDCAMS DEFINE statement. If DFSMS increases the size of the CI beyond the size specified for the associate buffer pool, the database cannot open and IMS issues message DFS0730I with a determination code of O,DC. In the event that the CI size is increased beyond the buffer pool size, you must increase the buffer pool size to match the CI size.
OSAM buffers can be fixed in storage using the IOBF= parameter. In VSAM, buffers are fixed using the VSAMFIX= parameter in the OPTIONS statement. Performance is generally improved if buffers are fixed in storage, then page faults do not occur. A page fault occurs when an instruction needs a page (a specific piece of storage) and the page is not in storage.
With OSAM, you can fix the buffers and their buffer prefixes, or the buffer prefixes and the subpool header, in storage. In addition, you can selectively fix buffer subpools, that is, you can choose to fix some buffer subpools and not others. Buffer subpools are fixed using the IOBF= parameter.
Using the IOBF= parameter you can specify:
- The size of buffers in a subpool.
- The number of buffers in a subpool. If three or fewer are specified, IMS gives you three; otherwise, it gives you the number specified. If you do not specify a sufficient number of buffers, your application program calls could waste time waiting for buffer space.
- Whether the buffers and buffer prefixes in this subpool need to be fixed.
- Whether the buffer prefixes in this subpool and the subpool header need to be fixed.
- An identifier to be assigned to the subpool. The identifier is
used in conjunction with the DBD statement to assign a specific subpool
to a given data set. This DBD statement is not the DBD statement used
in a DBD generation but one specified during execution. The identifier
allows you to have more than one subpool with the same buffer size.
You can use it to:
- Get better distribution of activity among subpools
- Direct new database applications to
private
subpools - Control the contention between a BMP and MPPs for subpools