Read/Write lock reports

The PThread read/write lock is similar to an AIX complex lock in that it can be acquired for reading or writing.

Writing is exclusive in that a single thread can only acquire the lock for writing, and no other thread can hold the lock for reading or writing at that point. Reading is not exclusive, so more than one thread can hold the lock for reading. Reading is recursive in that a single thread can hold multiple read-acquisitions on the lock. Writing is not recursive.

[PThread RWLock]    ADDRESS:    000000002FF228E0 
Parent Thread:  0000000000000001     creation time:     5.236585          deletion time:  6.090511 
Pid: 7362        Process Name: /home/testrwlock 
Creation call-chain ================================================================== 
0000000010000458        .main 
00000000100001DC        .__start 
============================================================================= 
         |                     |                  | Percent Held ( 26.235284s ) 
Acqui-   |  Miss  Spin   Wait  |    Secs Held     |  Real  Real    Comb  Real 
sitions  |  Rate  Count  Count |CPU      Elapsed  |  CPU  Elapsed  Spin  Wait 
1150     |40.568   785    0    |21.037942 12.0346 |80.19   99.22  30.45 46.29 
-------------------------------------------------------------------------------------- 
                Readers             Writers                     Total 
Depth     Min   Max   Avg       Min   Max   Avg            Min   Max   Avg 
LockQ     0     2     0         0     1     0              0     2     0 
SpinQ     0     768   601       0     15    11             0     782   612 
WaitQ     0     769   166       0     15    3              0     783   169 

             Acquisitions   Miss   Spin   Count  Wait   Count  Busy    Percent Held of Total Time 
PthreadID    Write  Read    Rate   Write  Read   Write  Read   Count    CPU   Elapse  Spin   Wait 
 ~~~~~~~~~~  ~~~~~~ ~~~~~~  ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~  ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ 
        772       0    207   78.70      0    765      0    796      0   11.58  15.13 29.69  23.21 
        515     765      0    1.80     14      0     14      0      0   80.10  80.19 49.76  23.08 
        258       0    178    3.26      0      6      0      5      0   12.56  17.10 10.00  20.02 
  
  

                 Acquisitions   Miss  Spin   Count  Wait   Count  Busy   Percent Held of Total Time 
Function Name    Write  Read    Rate  Write  Read   Write  Read   Count  CPU   Elapse  Spin   Wait    Return Address   Start Address    Offset 
 ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^  ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^  ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
  ._pthread_body  765    385   40.57   14    771      0      0      0   1.55    3.10   1.63   0.00  00000000D268944C 00000000D2684180 000052CC
In addition to the common header information and the [PThread RWLock] identifier, this report lists the following lock details:
Item Descriptor
Parent Thread Pthread id of the parent pthread.
creation time Elapsed time in seconds after the first event recorded in trace (if available).
deletion time Elapsed time in seconds after the first event recorded in trace (if available).
PID Process identifier.
Process Name Name of the process using the lock.
Call-chain Stack of called methods (if available).
Acquisitions The number of times that the lock was acquired in the analysis interval.
Miss Rate The percentage of attempts that failed to acquire the lock.
Spin Count The number of unsuccessful attempts to acquire the lock.
Wait Count The current PThread implementation does not force pthreads to wait for read/write locks. This reports the number of times a thread, spinning on this lock, is undispatched.
Seconds Held This field contains the following sub-fields:
CPU
The total number of processor seconds that the lock was held by an executing pthread. If the lock is held multiple times by the same pthread, only one hold interval is counted.
Elapse(d)
The total number of elapsed seconds that the lock was held by any pthread, whether the pthread was running or suspended.
Percent Held This field contains the following sub-fields:
Real CPU
The percentage of the cumulative processor time that the lock was held by any executing pthread.
Real Elapsed
The percentage of the elapsed real time that the lock was held by any pthread, either running or suspended.
Comb(ined) Spin
The percentage of the cumulative processor time that running pthreads spent spinning while trying to acquire this lock.
Real Wait
The percentage of elapsed real time that any pthread was waiting to acquire this lock. If two or more threads are waiting simultaneously, this wait time will only be charged once. To learn how many pthreads were waiting simultaneously, look at the WaitQ Depth statistics.
Depth This field contains the following sub-fields:
LockQ
The minimum, maximum, and average number of pthreads holding the lock, whether executing or suspended, across the analysis interval. This is broken down by read-acquisitions, write-acquisitions, and total acquisitions.
SpinQ
The minimum, maximum, and average number of pthreads spinning on the lock, whether executing or suspended, across the analysis interval. This is broken down by read-acquisitions, write-acquisitions, and total acquisitions.
WaitQ
The minimum, maximum, and average number of pthreads in a timed-wait state for the lock, across the analysis interval. This is broken down by read-acquisitions, write-acquisitions, and total acquisitions.
Note: The pthread and function details for read/write locks are similar to the mutex detail reports, except that they break down the acquisition, spin, and wait counts by whether the lock is to be acquired for reading or writing.