xref: /freebsd/share/man/man4/dtrace_io.4 (revision 4b4ad3a219e1ab31a3c3ad2eff2458d9edef1ce3)
1*4b4ad3a2SMark Johnston.\" Copyright (c) 2015 Mark Johnston <markj@FreeBSD.org>
2*4b4ad3a2SMark Johnston.\" All rights reserved.
3*4b4ad3a2SMark Johnston.\"
4*4b4ad3a2SMark Johnston.\" Redistribution and use in source and binary forms, with or without
5*4b4ad3a2SMark Johnston.\" modification, are permitted provided that the following conditions
6*4b4ad3a2SMark Johnston.\" are met:
7*4b4ad3a2SMark Johnston.\" 1. Redistributions of source code must retain the above copyright
8*4b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer.
9*4b4ad3a2SMark Johnston.\" 2. Redistributions in binary form must reproduce the above copyright
10*4b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer in the
11*4b4ad3a2SMark Johnston.\"    documentation and/or other materials provided with the distribution.
12*4b4ad3a2SMark Johnston.\"
13*4b4ad3a2SMark Johnston.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14*4b4ad3a2SMark Johnston.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15*4b4ad3a2SMark Johnston.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16*4b4ad3a2SMark Johnston.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17*4b4ad3a2SMark Johnston.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18*4b4ad3a2SMark Johnston.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19*4b4ad3a2SMark Johnston.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20*4b4ad3a2SMark Johnston.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21*4b4ad3a2SMark Johnston.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22*4b4ad3a2SMark Johnston.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23*4b4ad3a2SMark Johnston.\" SUCH DAMAGE.
24*4b4ad3a2SMark Johnston.\"
25*4b4ad3a2SMark Johnston.\" $FreeBSD$
26*4b4ad3a2SMark Johnston.\"
27*4b4ad3a2SMark Johnston.Dd April 18, 2015
28*4b4ad3a2SMark Johnston.Dt DTRACE_IO 4
29*4b4ad3a2SMark Johnston.Os
30*4b4ad3a2SMark Johnston.Sh NAME
31*4b4ad3a2SMark Johnston.Nm dtrace_io
32*4b4ad3a2SMark Johnston.Nd a DTrace provider for tracing events related to disk I/O
33*4b4ad3a2SMark Johnston.Sh SYNOPSIS
34*4b4ad3a2SMark Johnston.Fn io:::start "struct bio *" "struct devstat *"
35*4b4ad3a2SMark Johnston.Fn io:::done "struct bio *" "struct devstat *"
36*4b4ad3a2SMark Johnston.Sh DESCRIPTION
37*4b4ad3a2SMark JohnstonThe
38*4b4ad3a2SMark Johnston.Nm io
39*4b4ad3a2SMark Johnstonprovider allows the tracing of disk I/O events.
40*4b4ad3a2SMark JohnstonThe
41*4b4ad3a2SMark Johnston.Fn io:::start
42*4b4ad3a2SMark Johnstonprobe fires when a I/O request is about to be sent to the backing driver of a
43*4b4ad3a2SMark Johnston.Xr disk 9
44*4b4ad3a2SMark Johnstonobject.
45*4b4ad3a2SMark JohnstonThis occurs after all
46*4b4ad3a2SMark Johnston.Xr GEOM 4
47*4b4ad3a2SMark Johnstontransformations have been performed on the request.
48*4b4ad3a2SMark JohnstonThe
49*4b4ad3a2SMark Johnston.Fn io:::done
50*4b4ad3a2SMark Johnstonprobe fires when a I/O request is completed.
51*4b4ad3a2SMark JohnstonBoth probes take a
52*4b4ad3a2SMark Johnston.Vt "struct bio *"
53*4b4ad3a2SMark Johnstonrepresenting the I/O request as their first argument.
54*4b4ad3a2SMark JohnstonThe second argument is a
55*4b4ad3a2SMark Johnston.Vt "struct devstat *"
56*4b4ad3a2SMark Johnstonfor the underlying
57*4b4ad3a2SMark Johnston.Xr disk 9
58*4b4ad3a2SMark Johnstonobject.
59*4b4ad3a2SMark Johnston.Sh ARGUMENTS
60*4b4ad3a2SMark JohnstonThe fields of
61*4b4ad3a2SMark Johnston.Vt "struct bio"
62*4b4ad3a2SMark Johnstonare described in the
63*4b4ad3a2SMark Johnston.Xr g_bio 9
64*4b4ad3a2SMark Johnstonmanual page, and the fields of
65*4b4ad3a2SMark Johnston.Vt "struct devstat"
66*4b4ad3a2SMark Johnstonare described in the
67*4b4ad3a2SMark Johnston.Xr devstat 9
68*4b4ad3a2SMark Johnstonmanual page.
69*4b4ad3a2SMark JohnstonTranslators for the
70*4b4ad3a2SMark Johnston.Vt bufinfo_t
71*4b4ad3a2SMark Johnstonand
72*4b4ad3a2SMark Johnston.Vt devinfo_t
73*4b4ad3a2SMark JohnstonD types are defined in
74*4b4ad3a2SMark Johnston.Pa /usr/lib/dtrace/io.d .
75*4b4ad3a2SMark Johnston.Sh FILES
76*4b4ad3a2SMark Johnston.Bl -tag -width "/usr/lib/dtrace/io.d" -compact
77*4b4ad3a2SMark Johnston.It Pa /usr/lib/dtrace/io.d
78*4b4ad3a2SMark JohnstonDTrace type and translator definitions for the
79*4b4ad3a2SMark Johnston.Nm io
80*4b4ad3a2SMark Johnstonprovider.
81*4b4ad3a2SMark Johnston.El
82*4b4ad3a2SMark Johnston.Sh EXAMPLES
83*4b4ad3a2SMark JohnstonThe following script shows a per-process breakdown of total I/O by disk device:
84*4b4ad3a2SMark Johnston.Bd -literal -offset indent
85*4b4ad3a2SMark Johnston#pragma D option quiet
86*4b4ad3a2SMark Johnston
87*4b4ad3a2SMark Johnstonio:::start
88*4b4ad3a2SMark Johnston{
89*4b4ad3a2SMark Johnston        @[args[1]->device_name, execname, pid] = sum(args[0]->bio_bcount);
90*4b4ad3a2SMark Johnston}
91*4b4ad3a2SMark Johnston
92*4b4ad3a2SMark JohnstonEND
93*4b4ad3a2SMark Johnston{
94*4b4ad3a2SMark Johnston        printf("%10s %20s %10s %15s\n", "DEVICE", "APP", "PID", "BYTES");
95*4b4ad3a2SMark Johnston        printa("%10s %20s %10d %15@d\n", @);
96*4b4ad3a2SMark Johnston}
97*4b4ad3a2SMark Johnston.Ed
98*4b4ad3a2SMark Johnston.Sh COMPATIBILITY
99*4b4ad3a2SMark JohnstonThis provider is not compatible with the
100*4b4ad3a2SMark Johnston.Nm io
101*4b4ad3a2SMark Johnstonprovider found in Solaris, as its probes use native
102*4b4ad3a2SMark Johnston.Fx
103*4b4ad3a2SMark Johnstonargument types.
104*4b4ad3a2SMark Johnston.Sh SEE ALSO
105*4b4ad3a2SMark Johnston.Xr dtrace 1 ,
106*4b4ad3a2SMark Johnston.Xr devstat 9 ,
107*4b4ad3a2SMark Johnston.Xr SDT 9
108*4b4ad3a2SMark Johnston.Sh HISTORY
109*4b4ad3a2SMark JohnstonThe
110*4b4ad3a2SMark Johnston.Nm io
111*4b4ad3a2SMark Johnstonprovider first appeared in
112*4b4ad3a2SMark Johnston.Fx
113*4b4ad3a2SMark Johnston9.2 and 10.0.
114*4b4ad3a2SMark Johnston.Sh AUTHORS
115*4b4ad3a2SMark JohnstonThis manual page was written by
116*4b4ad3a2SMark Johnston.An Mark Johnston Aq Mt markj@FreeBSD.org .
117*4b4ad3a2SMark Johnston.Sh BUGS
118*4b4ad3a2SMark JohnstonThe
119*4b4ad3a2SMark Johnston.Fn io:::wait-start
120*4b4ad3a2SMark Johnstonand
121*4b4ad3a2SMark Johnston.Fn io:::wait-done
122*4b4ad3a2SMark Johnstonprobes are not currently implemented on
123*4b4ad3a2SMark Johnston.Fx .
124