Use of the message format buffer pool
Message format buffer pools contain MFS control blocks. The control blocks can be loaded using one of two pool manager routines, depending on whether the control block is needed immediately.
MFS control blocks are loaded into the message format buffer pool by one of two MFS pool manager routines: an immediate fetch routine or a prefetch routine. The immediate fetch routine loads a control block that is needed immediately and not already in storage. The prefetch routine is used only if the prefetch option is specified during initialization of the online IMS control region. It is invoked when IMS anticipates the need for a control block; if the block is already in storage, use of prefetch lowers the likelihood that the block is forced out to make room for another block. The use of prefetch requests can improve response time.
When a requested control block is not already in the pool, and its name resides in the resident directory, $$IMSDIR, a single read operation loads the control block into storage. If the name is not in the resident directory, a read of one data set directory block followed by a read of the control block loads the control block into storage. Multiple reads of the data set occur when the size of the control block is greater than either the track size or the z/OS-specified BLKSIZE.
Fetch request elements
Fetch request elements (FREs) are used to represent control blocks that are either already in storage or have been requested for loading into storage. The number of FREs to be defined depends on the number of control blocks that can reside in the pool (a function of pool size) and the number of concurrent requests to load control blocks. FREs defined during initialization of the online IMS control region are allocated contiguously in the buffer pool.
Pool space management
The main objectives of message format buffer pool space management are:
- To keep as many control blocks as possible available in the pool.
- To minimize pool fragmentation.
The MFS pool manager assigns a priority to each fetch request. FREs represent prefetch requests and immediate fetch requests. When required, additional FREs are assigned from available pool space to represent immediate fetch requests. If an FRE is not available when a fetch request is made, a control block of lesser importance is discarded so that its FRE can be used to represent the new request.
When there is not enough pool space to hold a requested control block, a space-freeing algorithm is used to select less important control blocks (based on their frequency of use) for discarding.
Pool statistics
Use the /DISPLAY POOL command to display the contents of the message format buffer pool counters. The statistics displayed for directory and fetch input/output operations and pool space use should help in determining the appropriate pool size and number of FREs.