3.6. Examining User-Level Locks in a ProcessWith the process lock statistics command, plockstat(1M), you can observe hot lock behavior in user applications that use user-level locks. The plockstat command uses DTrace to instrument and measure lock statistics. # plockstat -p 27088 ^C Mutex block Count nsec Lock Caller ------------------------------------------------------------------------------- 102 39461866 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 4 21605652 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 11 19908101 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 12 16107603 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 10 9000198 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 14 5833887 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 10 5366750 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 120 964911 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 48 713877 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 52 575273 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 89 534127 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 14 427750 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 1 348476 libaio.so.1`__aio_mutex libaio.so.1`_aio_req_add+0x228 Mutex spin Count nsec Lock Caller ------------------------------------------------------------------------------- 1 375967836 0x1000bab58 libaio.so.1`_aio_req_add+0x110 427 817144 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 18 272192 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 176 212839 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 36 203057 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 41 197392 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 3 100364 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 Mutex unsuccessful spin Count nsec Lock Caller ------------------------------------------------------------------------------- 222 323249 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 60 301223 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 24 295308 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 56 286114 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 99 282302 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 25 278939 libaio.so.1`__aio_mutex libaio.so.1`_aio_lock+0x28 1 241628 libaio.so.1`__aio_mutex libaio.so.1`_aio_req_add+0x228 Solaris has two main types of user-level locks:
The statistics show the different types of locks and information about contention for each. In this example, we can see mutex-block, mutex-spin, and mutex-unsuccessful-spin. For each type of lock we can see the following:
|