summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/tslog.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/tslog.4 3.html')
-rw-r--r--static/freebsd/man4/tslog.4 3.html116
1 files changed, 116 insertions, 0 deletions
diff --git a/static/freebsd/man4/tslog.4 3.html b/static/freebsd/man4/tslog.4 3.html
new file mode 100644
index 00000000..71931c3b
--- /dev/null
+++ b/static/freebsd/man4/tslog.4 3.html
@@ -0,0 +1,116 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">TSLOG(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">TSLOG(4)</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">tslog</code> &#x2014; <span class="Nd">Boot-time
+ event tracing facility</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<p class="Pp">To compile this boot-time event tracing facility into the kernel,
+ place the following line in the kernel configuration file:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">option TSLOG</code></div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp"><code class="Nm">tslog</code> is a boot-time event tracing
+ facility. It is suitable for tracing recursive events based on function
+ entries and exits. Its purpose is to ease pinpointing and reducing the
+ overall <span class="Ux">FreeBSD</span> boot time by generating detailed
+ timing information.</p>
+<p class="Pp"><code class="Nm">tslog</code> is able to trace the boot loader,
+ kernel initialization, and userland processes.</p>
+<p class="Pp">In userland, it records the following details for each process
+ ID:</p>
+<ul class="Bl-dash">
+ <li>The timestamp of the <a class="Xr">fork(2)</a> which creates the given
+ process ID and the parent process ID.</li>
+ <li>The path passed to <a class="Xr">execve(2)</a>, if any.</li>
+ <li>The first path resolved by <a class="Xr">namei(9)</a>, if any.</li>
+ <li>The timestamp of the <a class="Xr">exit(3)</a> which terminates the
+ process.</li>
+</ul>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYSCTL_VARIABLES"><a class="permalink" href="#SYSCTL_VARIABLES">SYSCTL
+ VARIABLES</a></h1>
+<p class="Pp">The following <a class="Xr">sysctl(8)</a> variables are
+ available:</p>
+<dl class="Bl-tag">
+ <dt id="debug.tslog"><var class="Va">debug.tslog</var></dt>
+ <dd>Dump the <code class="Nm">tslog</code> buffer of recorded loader and
+ kernel event timestamps.</dd>
+ <dt id="debug.tslog_user"><var class="Va">debug.tslog_user</var></dt>
+ <dd>Dump the <code class="Nm">tslog</code> buffer of recorded userland event
+ timestamps.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="FLAMEGRAPHS"><a class="permalink" href="#FLAMEGRAPHS">FLAMEGRAPHS</a></h1>
+<p class="Pp">The <code class="Nm">tslog</code> buffer dumps can be used to
+ generate flamegraphs of the <span class="Ux">FreeBSD</span> boot process for
+ visual analysis. See
+ <a class="Lk" href="https://github.com/cperciva/freebsd-boot-profiling">https://github.com/cperciva/freebsd-boot-profiling</a>
+ for more information.</p>
+</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">dtrace(1)</a>, <a class="Xr">boottrace(4)</a>,
+ <a class="Xr">ktr(4)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp"><code class="Nm">tslog</code> first appeared in
+ <span class="Ux">FreeBSD 12.0</span>. Support for tracing boot loaders and
+ userland process was added in <span class="Ux">FreeBSD 13.2</span>.</p>
+<section class="Ss">
+<h2 class="Ss" id="TSLOG_vs._Boottrace"><a class="permalink" href="#TSLOG_vs._Boottrace">TSLOG
+ vs. Boottrace</a></h2>
+<p class="Pp"><code class="Nm">tslog</code> is oriented towards system
+ developers while <a class="Xr">boottrace(4)</a> is meant to be easy to use
+ by system administrators. Both facilities provide an overview of timing and
+ resource usage of the boot process.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="TSLOG_vs._DTrace"><a class="permalink" href="#TSLOG_vs._DTrace">TSLOG
+ vs. DTrace</a></h2>
+<p class="Pp"><a class="Xr">dtrace(1)</a> is not always the right tool for
+ profiling early kernel initialization. The reason is it requires some kernel
+ subroutines which are not yet available early in the boot process, e.g.:
+ traps, memory allocation, or thread scheduling.
+ <code class="Nm">tslog</code> depends on fewer kernel subroutines than
+ <a class="Xr">dtrace(1)</a> and because of that can trace early kernel
+ initialization.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="TSLOG_vs._KTR"><a class="permalink" href="#TSLOG_vs._KTR">TSLOG
+ vs. KTR</a></h2>
+<p class="Pp"><a class="Xr">ktr(4)</a> has a couple of limitations which prevent
+ it from being able to run at the start of the boot process. In contrast,
+ <code class="Nm">tslog</code> is designed for logging timestamped events for
+ boot profiling.</p>
+</section>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp"><code class="Nm">tslog</code> was written by
+ <span class="An">Colin Percival</span>
+ &lt;<a class="Mt" href="mailto:cperciva@FreeBSD.org">cperciva@FreeBSD.org</a>&gt;.</p>
+<p class="Pp">This manual page was written by <span class="An">Mateusz
+ Piotrowski</span>
+ &lt;<a class="Mt" href="mailto:0mp@FreeBSD.org">0mp@FreeBSD.org</a>&gt;.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">June 1, 2022</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>