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