Disabled simple and RunQ lock details
In an AIX® SIMPLE Lock report, the first line starts with either [AIX SIMPLE Lock] or [AIX RunQ lock].
If the gennames or gensyms output file permits, the ADDRESS is also converted into a lock NAME and CLASS, and the containing kernel extension (KEX) is identified as well. The CLASS is printed with an eight hex-digit extension indicating how many locks of this class were allocated prior to it.
[AIX SIMPLE Lock] ADDRESS: 0000000020000D60 KEX: unknown
======================================================================================
| Trans- | | Percent Held ( 35.568534s )
Type: | Miss Spin form Busy | Secs Held | Real Real Comb Real
Disabled | Rate Count Count Count |CPU Elapsed | CPU Elapsed Spin Wait
|100.000 1 2658 0 |0.000000 0.000000 | 0.00 0.00 0.00 29.62
--------------------------------------------------------------------------------------
Total Acquisitions: 12945 |SpinQ Min Max Avg | Krlocks SpinQ Min Max Avg
Acq. holding krlock: 2498 |Depth 0 1 0 | Depth 0 1 0
--------------------------------------------------------------------------------------
PROD | CONFER | HANDOFF
0 | SELF: 0 TARGET: 0 ALL: 0 | 0
| w/ preemption: 0 w/ preemption: 0 |
--------------------------------------------------------------------------------------
Lock Activity (mSecs) - Interrupts Disabled
SIMPLE Count Minimum Maximum Average Total
+++++++ ++++++ ++++++++++++++ ++++++++++++++ ++++++++++++++ ++++++++++++++
LOCK 0 0.000000 0.000000 0.000000 0.000000
w/ KRLOCK 0 0.000000 0.000000 0.000000 0.000000
SPIN 0 0.000000 0.000000 0.000000 0.000000
KRLOCK LOCK 0 0.000000 0.000000 0.000000 0.000000
KRLOCK SPIN 0 0.000000 0.000000 0.000000 0.000000
TRANSFORM 0 0.000000 0.000000 0.000000 0.000000
Acqui- Miss Spin Transf. Busy Percent Held of Total Time
Function Name sitions Rate Count Count Count CPU Elapse Spin Transf. Return Address Start Address Offset
^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^
.dispatch 3177 0.63 20 0 0 0.00 0.02 0.00 0.00 0000000000039CF4 0000000000000000 00039CF4
.dispatch 6053 0.31 19 0 0 0.03 0.07 0.00 0.00 00000000000398E4 0000000000000000 000398E4
.setrq 3160 0.19 6 0 0 0.01 0.02 0.00 0.00 0000000000038E60 0000000000000000 00038E60
.steal_threads 1 0.00 0 0 0 0.00 0.00 0.00 0.00 0000000000066A68 0000000000000000 00066A68
.steal_threads 6 0.00 0 0 0 0.00 0.00 0.00 0.00 0000000000066CE0 0000000000000000 00066CE0
.dispatch 535 2.19 12 0 12 0.01 0.02 0.00 0.00 0000000000039D88 0000000000000000 00039D88
.dispatch 2 0.00 0 0 0 0.00 0.00 0.00 0.00 0000000000039D14 0000000000000000 00039D14
.prio_requeue 7 0.00 0 0 0 0.00 0.00 0.00 0.00 000000000003B2A4 0000000000000000 0003B2A4
.setnewrq 4 0.00 0 0 0 0.00 0.00 0.00 0.00 0000000000038980 0000000000000000 00038980
Acqui- Miss Spin Transf. Busy Percent Held of Total Time Process
ThreadID sitions Rate Count Count Count CPU Elapse Spin Transf. ProcessID Name
~~~~~~~~ ~~~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~~~
775 11548 0.34 39 0 0 0.06 0.10 0.00 0.00 774 wait
35619 3 25.00 1 0 0 0.00 0.00 0.00 0.00 18392 sleep
31339 21 4.55 1 0 0 0.00 0.00 0.00 0.00 7364 java
35621 2 0.00 0 0 0 0.00 0.00 0.00 0.00 18394 locktrace
(... lines omitted ...)
| Item | Descriptor |
|---|---|
| Type | If the simple lock was used with interrupts, this field is enabled. Otherwise, this field is disabled. |
| Miss Rate | The percentage of attempts that failed to acquire the lock. |
| Spin Count | The number of unsuccessful attempts to acquire the lock. |
| Busy Count | The number of simple_lock_try calls that returned busy. |
| Seconds Held | This field contains the
following sub-fields:
|
| Percent Held | This field contains the
following sub-fields:
|
| Total Acquisitions | The number of times that the lock was acquired in the analysis interval. This includes successful simple_lock_try calls. |
| Acq. holding krlock | The number of acquisitions made by threads holding a Krlock. |
| Transform count | The number of Krlocks that have been used (allocated and freed) by the simple lock. |
| SpinQ | The minimum, maximum, and average number of threads spinning on the lock, whether executing or suspended, across the analysis interval. |
| Krlocks SpinQ | The minimum, maximum, and average number of threads spinning on a Krlock allocated by the simple lock, across the analysis interval. |
| PROD | The associated Krlocks prod calls count. |
| CONFER SELF | The confer to self calls count for the simple lock and the associated Krlocks. |
| CONFER TARGET | The confer to target calls count for the simple lock and the associated Krlocks |
| CONFER ALL | The confer to all calls count for the simple lock and the associated Krlocks. |
| HANDOFF | The associated Krlocks handoff calls count. |
| Item | Descriptor |
|---|---|
| (no lock reference) | The thread is running, does not hold this lock, and is not attempting to acquire this lock. |
| LOCK | The thread has successfully acquired the lock and is currently executing. |
| LOCK with KRLOCK | The thread has successfully acquired the lock, while holding the associated Krlock, and is currently executing. |
| SPIN | The thread is executing and unsuccessfully attempting to acquire the lock. |
| KRLOCK LOCK | The thread has successfully acquired the associated Krlock and is currently executing. |
| KRLOCK SPIN | The thread is executing and unsuccessfully attempting to acquire the associated Krlock. |
| TRANSFORM | The thread has successfully allocated a Krlock that it associates itself to and is executing. |
The Lock Activity sections of the report measure the intervals of time (in milliseconds) that each thread spends in each of the states for this lock. The columns report the number of times that a thread entered the given state, followed by the maximum, minimum, and average time that a thread spent in the state once entered, followed by the total time that all threads spent in that state. These sections distinguish whether interrupts were enabled or disabled at the time that the thread was in the given state.
A thread can acquire a lock prior to the beginning of the analysis interval and release the lock during the analysis interval. When the splat command observes the lock being released, it recognizes that the lock had been held during the analysis interval up to that point and counts the time as part of the state-machine statistics. For this reason, the state-machine statistics might report that the number of times that the lock state was entered might actually be larger than the number of acquisitions of the lock that were observed in the analysis interval.
RunQ locks are used to protect resources in the thread management logic. These locks are acquired a large number of times and are only held briefly each time. A thread need not be executing to acquire or release a RunQ lock. Further, a thread might spin on a RunQ lock, but it will not go into an UNDISP or WAIT state on the lock. You will see a dramatic difference between the statistics for RunQ versus other simple locks.