summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/LOCK_PROFILING.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/LOCK_PROFILING.9 3.html')
-rw-r--r--static/freebsd/man9/LOCK_PROFILING.9 3.html150
1 files changed, 0 insertions, 150 deletions
diff --git a/static/freebsd/man9/LOCK_PROFILING.9 3.html b/static/freebsd/man9/LOCK_PROFILING.9 3.html
deleted file mode 100644
index 996a990b..00000000
--- a/static/freebsd/man9/LOCK_PROFILING.9 3.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">LOCK_PROFILING(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">LOCK_PROFILING(9)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">LOCK_PROFILING</code> &#x2014;
- <span class="Nd">kernel lock profiling support</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="Cd">options LOCK_PROFILING</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <code class="Dv">LOCK_PROFILING</code> kernel option adds
- support for measuring and reporting lock use and contention statistics.
- These statistics are collated by &#x201C;acquisition point&#x201D;.
- Acquisition points are distinct places in the kernel source code (identified
- by source file name and line number) where a lock is acquired.</p>
-<p class="Pp">For each acquisition point, the following statistics are
- accumulated:</p>
-<ul class="Bl-bullet">
- <li>The longest time the lock was ever continuously held after being acquired
- at this point.</li>
- <li>The total time the lock was held after being acquired at this point.</li>
- <li>The total time that threads have spent waiting to acquire the lock.</li>
- <li>The total number of non-recursive acquisitions.</li>
- <li>The total number of times the lock was already held by another thread when
- this point was reached, requiring a spin or a sleep.</li>
- <li>The total number of times another thread tried to acquire the lock while
- it was held after having been acquired at this point.</li>
-</ul>
-<p class="Pp">In addition, the average hold time and average wait time are
- derived from the total hold time and total wait time respectively and the
- number of acquisitions.</p>
-<p class="Pp">The <code class="Dv">LOCK_PROFILING</code> kernel option also adds
- the following <a class="Xr">sysctl(8)</a> variables to control and monitor
- the profiling code:</p>
-<dl class="Bl-tag">
- <dt id="debug.lock.prof.enable"><var class="Va">debug.lock.prof.enable</var></dt>
- <dd>Enable or disable the lock profiling code. This defaults to 0 (off).</dd>
- <dt id="debug.lock.prof.reset"><var class="Va">debug.lock.prof.reset</var></dt>
- <dd>Reset the current lock profiling buffers.</dd>
- <dt id="debug.lock.prof.stats"><var class="Va">debug.lock.prof.stats</var></dt>
- <dd>The actual profiling statistics in plain text. The columns are as follows,
- from left to right:
- <dl class="Bl-tag">
- <dt id="max"><var class="Va">max</var></dt>
- <dd>The longest continuous hold time in microseconds.</dd>
- <dt id="wait_max"><var class="Va">wait_max</var></dt>
- <dd>The longest continuous wait time in microseconds.</dd>
- <dt id="total"><var class="Va">total</var></dt>
- <dd>The total (accumulated) hold time in microseconds.</dd>
- <dt id="wait_total"><var class="Va">wait_total</var></dt>
- <dd>The total (accumulated) wait time in microseconds.</dd>
- <dt id="count"><var class="Va">count</var></dt>
- <dd>The total number of acquisitions.</dd>
- <dt id="avg"><var class="Va">avg</var></dt>
- <dd>The average hold time in microseconds, derived from the total hold
- time and the number of acquisitions.</dd>
- <dt id="wait_avg"><var class="Va">wait_avg</var></dt>
- <dd>The average wait time in microseconds, derived from the total wait
- time and the number of acquisitions.</dd>
- <dt id="cnt_hold"><var class="Va">cnt_hold</var></dt>
- <dd>The number of times the lock was held and another thread attempted to
- acquire the lock.</dd>
- <dt id="cnt_lock"><var class="Va">cnt_lock</var></dt>
- <dd>The number of times the lock was already held when this point was
- reached.</dd>
- <dt id="name"><var class="Va">name</var></dt>
- <dd>The name of the acquisition point, derived from the source file name
- and line number, followed by the name of the lock in parentheses.</dd>
- </dl>
- </dd>
- <dt id="debug.lock.prof.rejected"><var class="Va">debug.lock.prof.rejected</var></dt>
- <dd>The number of acquisition points that were ignored after the table filled
- up.</dd>
- <dt id="debug.lock.prof.skipspin"><var class="Va">debug.lock.prof.skipspin</var></dt>
- <dd>Disable or enable the lock profiling code for the spin locks. This
- defaults to 0 (do profiling for the spin locks).</dd>
- <dt id="debug.lock.prof.skipcount"><var class="Va">debug.lock.prof.skipcount</var></dt>
- <dd>Do sampling approximately every N lock acquisitions.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">sysctl(8)</a>, <a class="Xr">mutex(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">Mutex profiling support appeared in <span class="Ux">FreeBSD
- 5.0</span>. Generalized lock profiling support appeared in
- <span class="Ux">FreeBSD 7.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">MUTEX_PROFILING</code> code was written by
- <span class="An">Eivind Eklund</span>
- &lt;<a class="Mt" href="mailto:eivind@FreeBSD.org">eivind@FreeBSD.org</a>&gt;,
- <span class="An">Dag-Erling Sm&#x00F8;rgrav</span>
- &lt;<a class="Mt" href="mailto:des@FreeBSD.org">des@FreeBSD.org</a>&gt; and
- <span class="An">Robert Watson</span>
- &lt;<a class="Mt" href="mailto:rwatson@FreeBSD.org">rwatson@FreeBSD.org</a>&gt;.
- The <code class="Nm">LOCK_PROFILING</code> code was written by
- <span class="An">Kip Macy</span>
- &lt;<a class="Mt" href="mailto:kmacy@FreeBSD.org">kmacy@FreeBSD.org</a>&gt;.
- This manual page was written by <span class="An">Dag-Erling
- Sm&#x00F8;rgrav</span>
- &lt;<a class="Mt" href="mailto:des@FreeBSD.org">des@FreeBSD.org</a>&gt;.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
-<p class="Pp">The <code class="Dv">LOCK_PROFILING</code> option increases the
- size of <var class="Vt">struct lock_object</var>, so a kernel built with
- that option will not work with modules built without it.</p>
-<p class="Pp">The <code class="Dv">LOCK_PROFILING</code> option also prevents
- inlining of the mutex code, which can result in a fairly severe performance
- penalty. This is, however, not always the case.
- <code class="Dv">LOCK_PROFILING</code> can introduce a substantial
- performance overhead that is easily monitorable using other profiling tools,
- so combining profiling tools with <code class="Dv">LOCK_PROFILING</code> is
- not recommended.</p>
-<p class="Pp">Measurements are made and stored in nanoseconds using
- <a class="Xr">nanotime(9)</a>, (on architectures without a synchronized TSC)
- but are presented in microseconds. This should still be sufficient for the
- locks one would be most interested in profiling (those that are held long
- and/or acquired often).</p>
-<p class="Pp"><code class="Dv">LOCK_PROFILING</code> should generally not be
- used in combination with other debugging options, as the results may be
- strongly affected by interactions between the features. In particular,
- <code class="Dv">LOCK_PROFILING</code> will report higher than normal
- <a class="Xr">uma(9)</a> lock contention when run with
- <code class="Dv">INVARIANTS</code> due to extra locking that occurs when
- <code class="Dv">INVARIANTS</code> is present; likewise, using it in
- combination with <code class="Dv">WITNESS</code> will lead to much higher
- lock hold times and contention in profiling output.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 7, 2012</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>