How to find IMS deadlocks in your environment using Sysview
search cancel

How to find IMS deadlocks in your environment using Sysview

book

Article ID: 233885

calendar_today

Updated On:

Products

SYSVIEW Performance Management

Issue/Introduction

If there are issues with an IMS transaction or a need to research IMS transactions with unusual condition codes specifically about locked transactions SYSVIEW has several options available.

Environment

Release : 16.0

Component : SYSVIEW

Resolution

SYSVIEW has two commands in the area of IMS locks:

- IMSLOCKS displays IRLM lock contention if the IMS subsystem is using IRLM to manage locks.
- IMSPI displays Program Isolation lock contention if the IMS is using PI locking.
 
In the area of thresholding/alerting there is only IMLKWAIT to alert on a lock waiter at the jobname (dependent region) level and this only applies to IRLM locks.
 
The above mainly show lock contention and not specifically deadlocks. 
SYSVIEW does not have distinct deadlock alerting.
 
Both, the IMS PI lock manager and IRLM possibly have built-in deadlock detection/processing to prevent or resolve deadlocks or time out of a waiter if it is waiting for too long (IMS LOCKTIME parameter in case of IRLM). 

Looking at IBM documentation the actions could be various abends depending on the application, type of dependent region, or which lock manager it is (U0123, U0124, U0777, U2478, U3310 etc), or rather than an abend IMS could give the program a bad return code or just drive a backout.
 
It's possible to filter the SYSVIEW IMS Region Summary (IMSRSLOG cmd) and Transaction (IMSTLOG cmd) log records on the CCode field if searching for certain abends. 
It's also possible to use the SELECT CCODE command.
Just be aware that SELECT only operates on the subset of records currently in the display window. 
Since log streams can hold a lot of records only so many are retrieved at a time. 
So if the log stream contains say 1million records it's only currently be showing 10,000 of them, so SELECT is only filtering those 10,000.
 
Rather than using SELECT it is possible to specify certain filtering criteria right on the IMSRSLOG or IMSTLOG commands.
e.g. IMSRSLOG CCODE Unnnn
This will search the log stream and only fill the display window with records that meet that criteria (SELECT only filters records already in the display window) thus returning more hits that what SELECT may find.
 
This filtering may sound confusing so issue HELP IMSRSLOG for the command syntax/parameters. 
The LINES parameter controls the max number of records that can be put into the display window at a time. 
The PREV and NEXT subcommands are used to navigate to read the next set of records.
 
At any rate those are the tools SYSVIEW has in the area of IMS locks.

When wanting to use IRLM and IMLKWAIT thresholds it is necessary to ENABLE the IMS-LOCKS data collection entry in the SCHDIMS parmlib member (or on the SCHEDULE command) since it is marked DISABLED by default.

Additional Information

See for specifics in the Sysview Command Reference manual