onstat -g lmx Locked Mutexes
The onstat -g lmx command displays currently locked mutexes.
mid addr name holder lkcnt waiter waittime
4976 14256468 uselock0 213 0
||The internal mutex identifier
||Address of the locked mutex
||Name of the mutex
||The session ID of the thread holding the mutex.
||The number of waiters for this same mutex
||A list of the addresses waiting for this mutex.
||The amount of time in seconds this thread has been waiting.
Monitoring and Tuning
Typically these operations are VERY fast and the mutex locking is transient. However, if you have several sessions actively modifying a table (inserting, deleting, creating indexes, compressing, reorging, etc.) there can be some contention for this single resource. There are some things you can do. Fragmenting the table ROUND ROBIN so that the number of concurrent accesses to each of the tables partitions' header page are reduced by a factor of the number of partitions/fragments is one. Changing large insert jobs to use INSERT/PUT cursors with a maximum sized communications buffer (see FET_BUF_SIZE) so that batches of many rows are inserted in a single operation is another.
Locked mutexes aren't by default bad, it could possibly indicate a performance problem if they are a large list of waiters on a particular mutex, or large wait times.
The uselock mutex is involved in shared memory communication and so it's normal to see
that mutex locked while the sqlexec threads have no work.
qtrmutex - Mutex for queued transactions
You would probably see it when facing masssive CDR SENDQ contention.
dbs_partn is mutex on the partition number of the database tblspace. It is the same that partition number of the tables (tblspaces).
slcommon_ctl is a mutex is used when the server begins to listen, it is the common ctrl Mutex for session layer. Sometimes
seen in conjunction with the nsf.lock mutex