Overview
The lockstat provider makes available two kinds of probes: contention-event probes and hold-event
probes.
Contention-event probes correspond to contention on a synchronization primitive, and fire when a
thread is forced to wait for a resource to become available. Solaris is
generally optimized for the non-contention case, so prolonged contention is not expected. These probes
should be used to understand those cases where contention does arise. Because contention
is relatively rare, enabling contention-event probes generally doesn't substantially affect performance.
Hold-event probes correspond to acquiring, releasing, or otherwise manipulating a synchronization primitive. These probes
can be used to answer arbitrary questions about the way synchronization primitives are
manipulated. Because Solaris acquires and releases synchronization primitives very often (on the order
of millions of times per second per CPU on a busy system), enabling
hold-event probes has a much higher probe effect than does enabling contention-event probes.
While the probe effect induced by enabling them can be substantial, it is
not pathological; they may still be enabled with confidence on production systems.
The lockstat provider makes available probes that correspond to the different synchronization primitives
in Solaris; these primitives and the probes that correspond to them are discussed
in the remainder of this chapter.