xref: /freebsd-src/share/man/man4/boottrace.4 (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
1*4d846d26SWarner Losh.\" SPDX-License-Identifier: BSD-2-Clause
21ae2c59bSMateusz Piotrowski.\"
31ae2c59bSMateusz Piotrowski.\" Copyright (c) 2022 NetApp, Inc.
41ae2c59bSMateusz Piotrowski.\"
51ae2c59bSMateusz Piotrowski.\" Redistribution and use in source and binary forms, with or without
61ae2c59bSMateusz Piotrowski.\" modification, are permitted provided that the following conditions
71ae2c59bSMateusz Piotrowski.\" are met:
81ae2c59bSMateusz Piotrowski.\" 1. Redistributions of source code must retain the above copyright
91ae2c59bSMateusz Piotrowski.\"    notice, this list of conditions and the following disclaimer.
101ae2c59bSMateusz Piotrowski.\" 2. Redistributions in binary form must reproduce the above copyright
111ae2c59bSMateusz Piotrowski.\"    notice, this list of conditions and the following disclaimer in the
121ae2c59bSMateusz Piotrowski.\"    documentation and/or other materials provided with the distribution.
131ae2c59bSMateusz Piotrowski.\"
141ae2c59bSMateusz Piotrowski.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
151ae2c59bSMateusz Piotrowski.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
161ae2c59bSMateusz Piotrowski.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
171ae2c59bSMateusz Piotrowski.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
181ae2c59bSMateusz Piotrowski.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
191ae2c59bSMateusz Piotrowski.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
201ae2c59bSMateusz Piotrowski.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
211ae2c59bSMateusz Piotrowski.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
221ae2c59bSMateusz Piotrowski.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
231ae2c59bSMateusz Piotrowski.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
241ae2c59bSMateusz Piotrowski.\" SUCH DAMAGE.
251ae2c59bSMateusz Piotrowski.\"
2686e3fb40SMateusz Piotrowski.Dd July 1, 2022
271ae2c59bSMateusz Piotrowski.Dt BOOTTRACE 4
281ae2c59bSMateusz Piotrowski.Os
291ae2c59bSMateusz Piotrowski.Sh NAME
301ae2c59bSMateusz Piotrowski.Nm boottrace
311ae2c59bSMateusz Piotrowski.Nd Boot-time, run-time, and shutdown-time tracing facility
321ae2c59bSMateusz Piotrowski.Sh SYNOPSIS
331ae2c59bSMateusz Piotrowski.In sys/boottrace.h
341ae2c59bSMateusz Piotrowski.Sh DESCRIPTION
351ae2c59bSMateusz Piotrowski.Nm
361ae2c59bSMateusz Piotrowskiis a kernel-userspace interface for capturing trace events
3786e3fb40SMateusz Piotrowskiduring system boot and shutdown
3886e3fb40SMateusz Piotrowski.Pq in particular, one-shot events .
391ae2c59bSMateusz Piotrowski.Pp
401ae2c59bSMateusz PiotrowskiEvent annotations are present in:
411ae2c59bSMateusz Piotrowski.Bl -bullet -compact
421ae2c59bSMateusz Piotrowski.It
431ae2c59bSMateusz Piotrowskithe boot and shutdown paths in the
441ae2c59bSMateusz Piotrowskikernel
451ae2c59bSMateusz Piotrowski.It
461ae2c59bSMateusz Piotrowskisome key system utilities
471ae2c59bSMateusz Piotrowski.Po
481ae2c59bSMateusz Piotrowski.Xr init 8 ,
491ae2c59bSMateusz Piotrowski.Xr shutdown 8 ,
501ae2c59bSMateusz Piotrowski.Xr reboot 8
511ae2c59bSMateusz Piotrowski.Pc
521ae2c59bSMateusz Piotrowski.It
531ae2c59bSMateusz Piotrowski.Xr rc 8
541ae2c59bSMateusz Piotrowskiscripts
551ae2c59bSMateusz Piotrowski.El
561ae2c59bSMateusz Piotrowski.Pp
571ae2c59bSMateusz Piotrowski.Nm
581ae2c59bSMateusz Piotrowskiis unconditionally compiled into the kernel and
591ae2c59bSMateusz Piotrowskidisabled by default.
601ae2c59bSMateusz Piotrowski.Sh EVENT TABLES
611ae2c59bSMateusz PiotrowskiEvents are stored in three event tables: boot-time events, run-time events,
621ae2c59bSMateusz Piotrowskiand shutdown-time events.
631ae2c59bSMateusz Piotrowski.Bl -column "shutdown-time events" ""
641ae2c59bSMateusz Piotrowski.It Sy Table Name Ta Sy Event Description
651ae2c59bSMateusz Piotrowski.It boot-time events Ta Boot, kernel initialization, and
661ae2c59bSMateusz Piotrowski.Xr rc 8
671ae2c59bSMateusz Piotrowskiexecution;
681ae2c59bSMateusz Piotrowski.Xo
691ae2c59bSMateusz Piotrowskiuntil
701ae2c59bSMateusz Piotrowski.Xr init 8
711ae2c59bSMateusz Piotrowskitransitions into multi-user mode
721ae2c59bSMateusz Piotrowski.Xc
731ae2c59bSMateusz Piotrowski.It run-time events Ta Xo
741ae2c59bSMateusz PiotrowskiFrom when the system has completed booting (including
751ae2c59bSMateusz Piotrowski.Xr rc 8
761ae2c59bSMateusz Piotrowskiexecution) and
771ae2c59bSMateusz Piotrowski.Xr init 8
781ae2c59bSMateusz Piotrowskitransitions to multi-user mode
791ae2c59bSMateusz Piotrowskiuntil the beginning of shutdown procedures
801ae2c59bSMateusz Piotrowski.Xc
811ae2c59bSMateusz Piotrowski.It shutdown-time events Ta Xo
821ae2c59bSMateusz PiotrowskiAfter initialization of a shutdown, a reboot, or a kernel panic
831ae2c59bSMateusz Piotrowski.Xc
841ae2c59bSMateusz Piotrowski.El
851ae2c59bSMateusz Piotrowski.Sh LOADER TUNABLES
861ae2c59bSMateusz PiotrowskiTunables can be set at the
871ae2c59bSMateusz Piotrowski.Xr loader 8
881ae2c59bSMateusz Piotrowskiprompt before booting the kernel or stored in
891ae2c59bSMateusz Piotrowski.Xr loader.conf 5 .
901ae2c59bSMateusz Piotrowski.Nm
911ae2c59bSMateusz Piotrowskifeatures the following loader tunables:
921ae2c59bSMateusz Piotrowski.Bl -tag -width indent
931ae2c59bSMateusz Piotrowski.It Va kern.boottrace.dotrace_kernel
941ae2c59bSMateusz PiotrowskiSet to
951ae2c59bSMateusz Piotrowski.Ql 1
961ae2c59bSMateusz Piotrowskito enable tracing of kernel events.
971ae2c59bSMateusz PiotrowskiDefault:
981ae2c59bSMateusz Piotrowski.Ql 1
991ae2c59bSMateusz Piotrowski.Pq enabled .
1001ae2c59bSMateusz Piotrowski.It Va kern.boottrace.dotrace_user
1011ae2c59bSMateusz PiotrowskiSet to
1021ae2c59bSMateusz Piotrowski.Ql 1
1031ae2c59bSMateusz Piotrowskito enable tracing of userspace events.
1041ae2c59bSMateusz PiotrowskiDefault:
1051ae2c59bSMateusz Piotrowski.Ql 1
1061ae2c59bSMateusz Piotrowski.Pq enabled .
1071ae2c59bSMateusz Piotrowski.El
1081ae2c59bSMateusz Piotrowski.Sh SYSCTL VARIABLES
1091ae2c59bSMateusz PiotrowskiThe following variables are available as both
1101ae2c59bSMateusz Piotrowski.Xr sysctl 8
1111ae2c59bSMateusz Piotrowskivariables and
1121ae2c59bSMateusz Piotrowski.Xr loader 8
1131ae2c59bSMateusz Piotrowskitunables:
1141ae2c59bSMateusz Piotrowski.Bl -tag -width indent
1151ae2c59bSMateusz Piotrowski.It Va kern.boottrace.boottrace
1161ae2c59bSMateusz PiotrowskiCreate a new trace event and write it to the boot-time table.
1171ae2c59bSMateusz Piotrowski.Pp
1181ae2c59bSMateusz PiotrowskiA new trace event consists of a process name and an event description,
1191ae2c59bSMateusz Piotrowskiseparated by a colon
1201ae2c59bSMateusz Piotrowski.Pq Ql \&: .
1211ae2c59bSMateusz PiotrowskiIf the colon is missing or if the provided string for the process name is empty,
1221ae2c59bSMateusz Piotrowskithe process name is inferred from the invoking process
1231ae2c59bSMateusz Piotrowski.Pq which is its executable name .
1241ae2c59bSMateusz Piotrowski.It Va kern.boottrace.enabled
1251ae2c59bSMateusz PiotrowskiSet to
1261ae2c59bSMateusz Piotrowski.Ql 1
1271ae2c59bSMateusz Piotrowskito enable tracing.
1281ae2c59bSMateusz PiotrowskiThis is a read-only
1291ae2c59bSMateusz Piotrowski.Xr sysctl 8
1301ae2c59bSMateusz Piotrowskivariable.
1311ae2c59bSMateusz PiotrowskiDefault:
1321ae2c59bSMateusz Piotrowski.Ql 0
1331ae2c59bSMateusz Piotrowski.Pq disabled .
1341ae2c59bSMateusz Piotrowski.It Va kern.boottrace.log
1351ae2c59bSMateusz PiotrowskiShow the events stored in boot-time and run-time
1361ae2c59bSMateusz Piotrowskitables.
1371ae2c59bSMateusz PiotrowskiThis
1381ae2c59bSMateusz Piotrowskiis an opaque
1391ae2c59bSMateusz Piotrowski.Xr sysctl 8
1401ae2c59bSMateusz Piotrowskivariable.
1411ae2c59bSMateusz Piotrowski.It Va kern.boottrace.runtrace
1421ae2c59bSMateusz PiotrowskiSame as
1431ae2c59bSMateusz Piotrowski.Va kern.boottrace.boottrace ,
1441ae2c59bSMateusz Piotrowskibut write to the run-time table.
1451ae2c59bSMateusz Piotrowski.It Va kern.boottrace.shuttrace
1461ae2c59bSMateusz PiotrowskiSame as
1471ae2c59bSMateusz Piotrowski.Va kern.boottrace.boottrace ,
1481ae2c59bSMateusz Piotrowskibut write to the shutdown-time table.
1491ae2c59bSMateusz Piotrowski.It Va kern.boottrace.shutdown_trace
1501ae2c59bSMateusz PiotrowskiLog shutdown-time events to the console before the system halts.
1511ae2c59bSMateusz Piotrowski.It Va kern.boottrace.shutdown_trace_threshold
1521ae2c59bSMateusz PiotrowskiSet a time threshold for logging shutdown-time events in milliseconds.
1531ae2c59bSMateusz PiotrowskiAn event is ignored
1541ae2c59bSMateusz Piotrowskiif the time difference to the previous event is less than
1551ae2c59bSMateusz Piotrowskithe threshold value.
1561ae2c59bSMateusz PiotrowskiDefault:
1571ae2c59bSMateusz Piotrowski.Ql 0
1581ae2c59bSMateusz Piotrowski.Pq logs all events .
1591ae2c59bSMateusz Piotrowski.El
1601ae2c59bSMateusz Piotrowski.Sh EXAMPLES
1611ae2c59bSMateusz PiotrowskiCreate a new trace event with a process name
1621ae2c59bSMateusz Piotrowski.Dq foo
1631ae2c59bSMateusz Piotrowskiand an event description
1641ae2c59bSMateusz Piotrowski.Dq bar
1651ae2c59bSMateusz Piotrowskiusing
1661ae2c59bSMateusz Piotrowski.Xr sysctl 8 :
1671ae2c59bSMateusz Piotrowski.Bd -literal -offset indent
1681ae2c59bSMateusz Piotrowskisysctl kern.boottrace.boottrace="foo:bar"
1691ae2c59bSMateusz Piotrowski.Ed
1701ae2c59bSMateusz Piotrowski.Pp
1711ae2c59bSMateusz PiotrowskiHere is a sample output of
1721ae2c59bSMateusz Piotrowski.Va kern.boottrace.log
1731ae2c59bSMateusz Piotrowski.Po shortened with
1741ae2c59bSMateusz Piotrowski.Dq [...]
1751ae2c59bSMateusz Piotrowskifor readability
1761ae2c59bSMateusz Piotrowski.Pc :
1771ae2c59bSMateusz Piotrowski.Bd -literal
1781ae2c59bSMateusz PiotrowskiCPU      msecs      delta process                  event                                      PID CPUtime IBlks OBlks
1791ae2c59bSMateusz Piotrowski  0   44872811          0 kernel                   sysinit 0x2100001                            0    0.00     0     0
1801ae2c59bSMateusz Piotrowski  0   44872812          1 kernel                   sysinit 0x2110000                            0    0.00     0     0
1811ae2c59bSMateusz Piotrowski  0   44872812          0 kernel                   sysinit 0x2140000                            0    0.00     0     0
1821ae2c59bSMateusz Piotrowski[...]
1831ae2c59bSMateusz Piotrowski  0   44872817          0 kernel                   sysinit 0x2800000                            0    0.00     0     0
1841ae2c59bSMateusz Piotrowski  0   44873820       1003 kernel                   sysinit 0x2880000                            0    0.00     0     0
1851ae2c59bSMateusz Piotrowski  0   44873820          0 kernel                   sysinit 0x2888000                            0    0.00     0     0
1861ae2c59bSMateusz Piotrowski[...]
1871ae2c59bSMateusz Piotrowski  1   44875735          0 kernel                   sysinit 0xfffffff                            0    0.00     0     0
1881ae2c59bSMateusz Piotrowski  1   44875735          0 swapper                  mi_startup done                              0    0.00     0     0
1891ae2c59bSMateusz Piotrowski  0   44875750         15 init                     init(8) starting...                          1    0.00     0     0
1901ae2c59bSMateusz Piotrowski  0   44875751          1 init                     /etc/rc starting...                          1    0.00     0     0
1911ae2c59bSMateusz Piotrowski  0   44875831         80 boottrace                /etc/rc.d/rctl start                        26    0.00     0     0
1921ae2c59bSMateusz Piotrowski  1   44875839          8 boottrace                /etc/rc.d/rctl done                         26    0.00     2     0
1931ae2c59bSMateusz Piotrowski[...]
1941ae2c59bSMateusz Piotrowski  0   44876446          0 boottrace                /etc/rc.d/netif start                      390    0.00     0     0
1951ae2c59bSMateusz Piotrowski  1   44881116       4670 boottrace                /etc/rc.d/netif done                       390    0.12    34     0
1961ae2c59bSMateusz Piotrowski[...]
1971ae2c59bSMateusz Piotrowski  0   44882866          1 boottrace                /etc/rc.d/securelevel start               1679    0.00     0     0
1981ae2c59bSMateusz Piotrowski  0   44882872          6 boottrace                /etc/rc.d/securelevel done                1679    0.00     0     0
1991ae2c59bSMateusz Piotrowski  1   44882879          7 init                     /etc/rc finished                             1    2.22   743    15
2001ae2c59bSMateusz PiotrowskiTotal measured time: 10068 msecs
2011ae2c59bSMateusz Piotrowski
2021ae2c59bSMateusz Piotrowski
2031ae2c59bSMateusz PiotrowskiCPU      msecs      delta process                  event                                      PID CPUtime IBlks OBlks
2041ae2c59bSMateusz Piotrowski  1   44882880          0 init                     multi-user start                             1    2.22   743    15
2051ae2c59bSMateusz Piotrowski  0   44918215      35335 kldload                  hwpmc.ko: sysinit 0xd800000               1698    0.00     0     0
2061ae2c59bSMateusz PiotrowskiTotal measured time: 35335 msecs
2071ae2c59bSMateusz Piotrowski.Ed
2081ae2c59bSMateusz Piotrowski.Sh SEE ALSO
2096737f30fSMateusz Piotrowski.Xr tslog 4 ,
2101ae2c59bSMateusz Piotrowski.Xr boottrace 8 ,
2111ae2c59bSMateusz Piotrowski.Xr sysctl 8
2121ae2c59bSMateusz Piotrowski.Sh HISTORY
2131ae2c59bSMateusz PiotrowskiNetApp created
2141ae2c59bSMateusz Piotrowski.Nm
2151ae2c59bSMateusz Piotrowskito diagnose slow devices and subsystems.
2161ae2c59bSMateusz PiotrowskiOnce upstreamed,
2171ae2c59bSMateusz Piotrowski.Nm
2181ae2c59bSMateusz Piotrowskiwas first publicly released with
2191ae2c59bSMateusz Piotrowski.Fx 14.0 .
2201ae2c59bSMateusz Piotrowski.Sh AUTHORS
2211ae2c59bSMateusz PiotrowskiThis manual page was written by
2221ae2c59bSMateusz Piotrowski.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org .
223