xref: /dragonfly/usr.bin/ktrdump/ktrdump.8 (revision ed5d5720)
1.\"-
2.\" Copyright (c) 2002 Chad David
3.\" All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\" 1. Redistributions of source code must retain the above copyright
9.\"    notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\"    notice, this list of conditions and the following disclaimer in the
12.\"    documentation and/or other materials provided with the distribution.
13.\"
14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24.\" SUCH DAMAGE.
25.\"
26.\" $FreeBSD: src/usr.bin/ktrdump/ktrdump.8,v 1.7 2005/03/08 06:58:56 hmp Exp $
27.\" $DragonFly: src/usr.bin/ktrdump/ktrdump.8,v 1.16 2008/11/10 02:05:31 swildner Exp $
28.\"
29.Dd November 9, 2008
30.Dt KTRDUMP 8
31.Os
32.Sh NAME
33.Nm ktrdump
34.Nd print kernel ktr trace buffer
35.Sh SYNOPSIS
36.Nm
37.Op Fl acfilnpqrstx
38.Op Fl A Ar factor
39.Op Fl N Ar execfile
40.Op Fl M Ar corefile
41.Op Fl o Ar outfile
42.Sh DESCRIPTION
43The
44.Nm
45utility is used to dump the contents of the kernel ktr trace buffer.
46.Pp
47The following options are available:
48.Bl -tag -width ".Fl N Ar execfile"
49.It Fl a
50Print most fields.
51Implies
52.Fl c
53.Fl i
54.Fl x
55.Fl p
56.Fl r ,
57and
58.Fl s .
59Note that
60.Fl f
61is not included.
62.It Fl c
63Print the CPU number that each entry was logged from.
64.It Fl f
65Print the file and line number that each entry was logged from.
66.It Fl i
67Print the ID string field, identifying the facility being logged.
68.It Fl l
69.Nm
70will loop waiting for new data rather than exit.
71.It Fl n
72.Nm
73normally tries to translate the caller fields and (when easily parsed)
74trace arguments into symbols.
75This option forces hex values to be displayed instead.
76This option will also cause relative timestamps to
77be displayed as TSC timestamps rather than converted to microseconds.
78.It Fl p
79Print the trace data.
80.It Fl q
81Quiet mode; do not print the column header.
82.It Fl r
83Print relative timestamps in microseconds, rather than absolute TSC
84timestamps.
85.It Fl s
86Attempt to merge the KTR logs for all cpus into a single time-sorted
87log.
88For the numbers to make any sense you probably want to turn on the
89.Va debug.ktr.resynchronize
90.Xr sysctl 3
91variable.
92This sysctl causes the kernel to periodically
93calculate the drift between each CPU's TSC and apply a correction.
94.It Fl t
95Print the timestamp for each entry.
96.It Fl x
97Print the call chain leading up to the procedure which issued
98the KTR.
99.It Fl A Ar factor
100Specify a correction factor to be applied to attempt to remove the
101overhead of the KTR logging call itself.
102.It Fl N Ar execfile
103The kernel image to resolve symbols from.
104The default is the value returned via
105.Xr getbootfile 3 .
106.It Fl M Ar corefile
107The core file or memory image to read from.
108The default is
109.Pa /dev/mem .
110.It Fl o Ar outfile
111The file to write the output to.
112The default is standard output.
113.El
114.Sh OPERATIONAL NOTES
115Users of
116.Nm
117should keep in mind that the act of trace logging will itself affect
118execution overheads.
119On a 2Ghz cpu a logging call can take anywhere from 40ns to 150ns to run.
120.Pp
121The TSC counter is used on cpus equipped with it (which is all modern cpus).
122The TSC counters may not be synchronized on SMP systems and may drift even
123between cores on multi-core cpus.
124Enabling synchronization between cpus via the
125.Va debug.ktr.resynchronize
126sysctl will impose additional system overheads and will generally only be
127accurate to within 100ns or so (and perhaps not even that good).
128Resynchronization only occurs 10 times a second and serious drift will
129cause a great deal of measurement noise when trying to compare events occurring
130on two different cpus.
131.Pp
132Users using the
133.Fl s
134option should be aware that events for each cpu are independently logged
135and one cpu might have more events logged then another, causing earlier
136events to be discarded sooner then other cpus.
137The beginning portion of
138the sorted output may thus show MP related events for one cpu with no
139corresponding events for other cpus.
140.Pp
141It is possible to somewhat characterize KTR logging overheads by setting
142the
143.Va debug.ktr.testlogcnt
144sysctl and then observing test logging events in the KTR output.
145Tests 1-3 log four dummy arguments while tests 4-6 log no arguments.
146.Pp
147It is possible to characterize IPI messaging latencies by setting the
148.Va debug.ktr.testipicnt
149sysctl.
150A small number between 1 and 1000 is recommended.
151This will
152cause the system to ping pong a single IPI message between cpu 0 and cpu 1
153asynchronously that number of times, as fast as it can.
154A
155.Nm
156should be performed almost immediately after setting the sysctl or you
157might miss the logged events.
158.Sh SEE ALSO
159.Xr ktr 4 ,
160.Xr ktr 9
161.Sh HISTORY
162The
163.Nm
164utility first appeared in
165.Fx 5.0 .
166.Sh AUTHORS
167.An -nosplit
168The
169.Nm
170utility was originally implemented by
171.An Jake Burkholder Aq jake@FreeBSD.org .
172This manual page was originally written by
173.An Chad David Aq davidc@FreeBSD.org .
174The program and manual page were rewritten pretty much from
175scratch by
176.An Matthew Dillon
177for
178.Dx .
179