Using a system dump to resolve enqueue waits
The CEMT INQUIRE UOWENQ (or CEMT INQUIRE ENQ) command does not return information about enqueues on some types of resources.
Table 1 shows the resources that this applies to.
| Resource name | Type of resource |
|---|---|
| ISSSENQP | Sockets used by IPIC communication for an IPCONN. |
| JOURNALS | CICS journal names used during creation, deletion, or use of a journal entry. See Log manager waits for information to help you diagnose problems with the MVS system logger. |
| KCADDR | Addresses locked internally by CICS. |
| KCSTRING | Strings locked internally by CICS. |
| LOGSTRMS | MVS logstream names used during connection of streams to the MVS logger. A long wait could indicate a problem with the logger. See Log manager waits for information to help you diagnose problems with the MVS system logger. |
To investigate enqueue waits on these resources, you can use the NQ section of a system dump. (You can use a system dump to investigate enqueue waits on other types of resource, but you might find the INQUIRE UOWENQ command more convenient.)
1 on the NQ dump formatting keyword (dump
formatting keywords are described in Summary of system dump formatting keywords and levels). Figure 1 shows an example summary for the transient
data enqueue (TDNQ) pool. ==NQ: ENQUEUE POOL SUMMARY - TDNQ
Default shunt action: Retain
*Total enqueue requests: 34
*Total requests that have waited: 8
*Total requests failed busy: 6
*Total requests failed locked: 2
*Total requests timed out: 1
*Total enqueues that were retained: 1
*NOTE: These values were reset at 15.44.39 (the last statistics interval collection)
OWNER / WAITER
NQEA Tran Tran Lifetime Hash
Enqueue Name Len Sta Address Id Num Local Uowid Uow Tsk Indx
------------------------------ --- --- -------- ---- ----- ---------------- --- --- ----
Q007TOQ 9 Act 052C4580 TDWR 00356 A8EBC70A53A4BC82 1 0 13
Q002FROMQ 9 Act 053D0880 TDRD 00435 A8EBD91A57D9B7D2 2 0 24
Waiter : 0540BBC0 TDRD 00467 A8EBDAC692BB7C10 0 1 24
Waiter : 0537CE70 TDDL 00512 A8EBDAE6FF0B56F2 1 0 24
Q007FROMQ 9 Act 0540CC80 ENQY 00217 A8EBB7FE23067C44 0 1 51
Waiter : 0538F320 ENQY 00265 A8EBBF0846C00FC0 0 1 51
Waiter : 0518C5C0 ENQY 00322 A8EBC393B90C66D8 0 1 51
Q002TOQ 9 Ret 0520B260 ---- ----- A8EBD82AFDA4CD82 1 0 53
Q009FROMQ 9 Act 0540A140 TDRD 00366 A8EBC84D3FF80250 1 0 62
Waiter. The meanings
of the table headings are: - Enqueue Name
- The string that has been enqueued upon. Normally, up to 30 characters
of the name are displayed; however, the summary reports for file control
and address enqueue pools format the enqueue name differently:
- File control uses six enqueue pools for its various types of lock.
Each enqueue contains the address of a control block (for example,
DSNB, FCTE) in its first four bytes. If the enqueue is a record lock, this
is followed by the record identifier.
Depending upon the type of the data set or file, the remainder of the enqueue name could, for example, be an RRN in an RRDS, or a record key in a KSDS data set. In the summary, the remainder of the enqueue name is displayed in both hex and character formats. This takes up two summary lines instead of one.
- The summary reports for the EXECADDR and KCADDR enqueue pools display the enqueue name in hexadecimal format. This is because the enqueue request was made on an address.
- IPIC communication can use more than one socket for
an IPCONN when communicating with another system.
For each of these sockets, there is an IPIC session set (ISSS) control
block and an associated enqueue name.
The enqueue name is a character string that is composed of the first four characters of the IPCONN name followed by ‘ISSSnnnx’ where nnn is an index for a particular IPIC session set (ISSS) and x is the character S or C.
- File control uses six enqueue pools for its various types of lock.
Each enqueue contains the address of a control block (for example,
DSNB, FCTE) in its first four bytes. If the enqueue is a record lock, this
is followed by the record identifier.
- Len
- The length of the enqueue name.
- Sta
- The state that the enqueue is held in. This field contains either:
- Act
- The enqueue is held in active state—that is, other transactions are allowed to wait on the enqueue.
- Ret
- The enqueue is held in retained state—that is, other transactions are not allowed to wait on the enqueue. Typically, this is because the enqueue is owned by a shunted unit of work.
- NQEA Address
- The address of the NQEA corresponding to the enqueue owner or waiter. The NQEA contains the full enqueue name if it was too large to display fully.
- TranId
- The transaction identifier of the enqueue owner or waiter. If the enqueue is owned by a shunted UOW, this field contains '----'.
- TranNum
- The task number of the enqueue owner or waiter. If the enqueue is owned by a shunted UOW, this field contains '-----'.
- Local Uowid
- The local UOW identifier of the enqueue owner or waiter.
- Uow Lifetime
- For an enqueue owner, the number of times the enqueue is owned with UOW lifetime. For an enqueue waiter, whether the waiter has requested the enqueue for the lifetime of the UOW.
- Tsk Lifetime
- For an enqueue owner, the number of times the enqueue is owned with task lifetime. For an enqueue waiter, whether the waiter has requested the enqueue for the lifetime of the task.
- Hash Indx
- An index into the pool’s internal hash table.