Enabling the IRLM lock timeout function
The IRLM Lock Timeout function enables you to interrupt processes that are waiting for locks for longer than a specified number of seconds. This parameter can also be used on DFSVSAMP DD statements for IMS DLIBATCH jobs.
- LOCKTIME
- Specifies the IMS LOCKTIME values. You can
specify LOCKTIME values in any combination of the following keywords and parameters:
- BMP(xx)
- Specifies the amount of time that IMS waits before lock requests for BMP regions are timed out. BMP regions include IMS BMP and JBP regions. The value xx, represents time in seconds and can range from 1 - 32767.
- BMPOPT(ABEND | STATUS)
- Specifies whether IMS ends a timed-out task abnormally (ABEND) or returns a status code to the application (STATUS).
- MSG(yy)
- Specifies the amount of time that IMS waits before lock requests for MSG regions are timed out. MSG regions include IMS MPP, JMP, and IFP regions, as well as DRA threads. The value, which represents time in seconds, can range 1 - 32767.
- MSGOPT(ABEND | STATUS)
- Specifies whether IMS ends a timed-out task abnormally (ABEND) or returns a status code to the application (STATUS).
Updating IMS LOCKTIME values does not affect the lock timeout value in an IRLM. To change the lock timeout value in an IRLM, use the existing MODIFY IRLM command.
Recommendation: Generally, use the same timeout values for both IMS and IRLM. When using two values in IMS, setting the IRLM timeout value to the lower of the two IMS values allows IMS and IRLM to act together. When more than one IMS is identified to the same IRLM, workload conditions might require using different timeout values across IMS systems. In such a case, note the following:- Using a lower timeout value in IRLM results in lock requests to wait until the time spent for waiting equals the lowest IMS LOCKTIME value.
- Using a higher timeout value in IRLM results in lock requests to wait beyond the IMS time because IRLM does not call IMS until the IRLM timeout value is exceeded.
When no value is specified for the LOCKTIME parameter, IRLM issues message DXR162I to indicate that a task has held (or has been waiting for) a lock. The first message is issued after five minutes; thereafter, messages are issued at intervals of one minute. RMF records (type 79.15) can be formatted for more information about the task that is holding (or waiting for) the lock.
When a value is
specified for the LOCKTIME parameter, IRLM interrupts all the dependent regions that have been
waiting for a lock for longer than the number of seconds specified by the LOCKTIME parameter. An
ABENDU3310 is issued for every dependent region that waits for longer than the number of seconds
specified by the LOCKTIME parameter. The number of seconds can be changed after IMS initialization by issuing the command
MODIFY,irlmproc,SET,TIMEOUT=nn.
- ABEND
- Specifies that an abend occurs when the value specified for LOCKTIME is exceeded. ABEND is the default.
- STATUS
- Specifies that a status code of BD be returned when the value specified for LOCKTIME is exceeded.
- xxxxx
- When LOCKTIME=(xxxxx), xxxxx specifies the online timeout value in seconds. Valid values are from 1 to 32767. Optionally, you can specify ABEND or STATUS after xxxxx to determine whether an abend occurs or a status code is issued when the xxxxx value is reached. If a second timeout value is not specified, a value of xxxxx is also used for batch or a BMP. Unless xxxxx is specified as a multiple of the local IRLM deadlock timer value, the timeout occurs at the next deadlock timer interval.
- yyyyy
- If specified in the DFSVSMxx PROCLIB member after xxxxx, defines the timeout value, in seconds, for BMPs or JBPs. Valid values are from 1 to 32767. Optionally, you can specify ABEND or STATUS after yyyyy to determine whether an abend occurs or a status code is issued when the yyyyy value is reached.
Unless xxxxx and yyyyy are specified as a multiple of the local IRLM deadlock timer value, the timeout occurs at the next deadlock timer interval. For example, if xxxxx is 5 seconds and yyyyy is not specified, and the deadlock timer value is (3,1), the timeout occurs at 6 seconds because that is a multiple of 3.
