xref: /freebsd/share/man/man4/dtrace_io.4 (revision af1e9f5a46fe509ba95c31a932144edb6f8f6b99)
14b4ad3a2SMark Johnston.\" Copyright (c) 2015 Mark Johnston <markj@FreeBSD.org>
24b4ad3a2SMark Johnston.\" All rights reserved.
34b4ad3a2SMark Johnston.\"
44b4ad3a2SMark Johnston.\" Redistribution and use in source and binary forms, with or without
54b4ad3a2SMark Johnston.\" modification, are permitted provided that the following conditions
64b4ad3a2SMark Johnston.\" are met:
74b4ad3a2SMark Johnston.\" 1. Redistributions of source code must retain the above copyright
84b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer.
94b4ad3a2SMark Johnston.\" 2. Redistributions in binary form must reproduce the above copyright
104b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer in the
114b4ad3a2SMark Johnston.\"    documentation and/or other materials provided with the distribution.
124b4ad3a2SMark Johnston.\"
134b4ad3a2SMark Johnston.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
144b4ad3a2SMark Johnston.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
154b4ad3a2SMark Johnston.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
164b4ad3a2SMark Johnston.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
174b4ad3a2SMark Johnston.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
184b4ad3a2SMark Johnston.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
194b4ad3a2SMark Johnston.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
204b4ad3a2SMark Johnston.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
214b4ad3a2SMark Johnston.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
224b4ad3a2SMark Johnston.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
234b4ad3a2SMark Johnston.\" SUCH DAMAGE.
244b4ad3a2SMark Johnston.\"
254b4ad3a2SMark Johnston.\" $FreeBSD$
264b4ad3a2SMark Johnston.\"
274b4ad3a2SMark Johnston.Dd April 18, 2015
284b4ad3a2SMark Johnston.Dt DTRACE_IO 4
294b4ad3a2SMark Johnston.Os
304b4ad3a2SMark Johnston.Sh NAME
314b4ad3a2SMark Johnston.Nm dtrace_io
324b4ad3a2SMark Johnston.Nd a DTrace provider for tracing events related to disk I/O
334b4ad3a2SMark Johnston.Sh SYNOPSIS
344b4ad3a2SMark Johnston.Fn io:::start "struct bio *" "struct devstat *"
354b4ad3a2SMark Johnston.Fn io:::done "struct bio *" "struct devstat *"
364b4ad3a2SMark Johnston.Sh DESCRIPTION
374b4ad3a2SMark JohnstonThe
384b4ad3a2SMark Johnston.Nm io
394b4ad3a2SMark Johnstonprovider allows the tracing of disk I/O events.
404b4ad3a2SMark JohnstonThe
414b4ad3a2SMark Johnston.Fn io:::start
424b4ad3a2SMark Johnstonprobe fires when a I/O request is about to be sent to the backing driver of a
434b4ad3a2SMark Johnston.Xr disk 9
444b4ad3a2SMark Johnstonobject.
454b4ad3a2SMark JohnstonThis occurs after all
464b4ad3a2SMark Johnston.Xr GEOM 4
474b4ad3a2SMark Johnstontransformations have been performed on the request.
484b4ad3a2SMark JohnstonThe
494b4ad3a2SMark Johnston.Fn io:::done
504b4ad3a2SMark Johnstonprobe fires when a I/O request is completed.
514b4ad3a2SMark JohnstonBoth probes take a
524b4ad3a2SMark Johnston.Vt "struct bio *"
534b4ad3a2SMark Johnstonrepresenting the I/O request as their first argument.
544b4ad3a2SMark JohnstonThe second argument is a
554b4ad3a2SMark Johnston.Vt "struct devstat *"
564b4ad3a2SMark Johnstonfor the underlying
574b4ad3a2SMark Johnston.Xr disk 9
584b4ad3a2SMark Johnstonobject.
594b4ad3a2SMark Johnston.Sh ARGUMENTS
604b4ad3a2SMark JohnstonThe fields of
614b4ad3a2SMark Johnston.Vt "struct bio"
624b4ad3a2SMark Johnstonare described in the
634b4ad3a2SMark Johnston.Xr g_bio 9
644b4ad3a2SMark Johnstonmanual page, and the fields of
654b4ad3a2SMark Johnston.Vt "struct devstat"
664b4ad3a2SMark Johnstonare described in the
674b4ad3a2SMark Johnston.Xr devstat 9
684b4ad3a2SMark Johnstonmanual page.
694b4ad3a2SMark JohnstonTranslators for the
704b4ad3a2SMark Johnston.Vt bufinfo_t
714b4ad3a2SMark Johnstonand
724b4ad3a2SMark Johnston.Vt devinfo_t
734b4ad3a2SMark JohnstonD types are defined in
744b4ad3a2SMark Johnston.Pa /usr/lib/dtrace/io.d .
754b4ad3a2SMark Johnston.Sh FILES
764b4ad3a2SMark Johnston.Bl -tag -width "/usr/lib/dtrace/io.d" -compact
774b4ad3a2SMark Johnston.It Pa /usr/lib/dtrace/io.d
784b4ad3a2SMark JohnstonDTrace type and translator definitions for the
794b4ad3a2SMark Johnston.Nm io
804b4ad3a2SMark Johnstonprovider.
814b4ad3a2SMark Johnston.El
824b4ad3a2SMark Johnston.Sh EXAMPLES
834b4ad3a2SMark JohnstonThe following script shows a per-process breakdown of total I/O by disk device:
844b4ad3a2SMark Johnston.Bd -literal -offset indent
854b4ad3a2SMark Johnston#pragma D option quiet
864b4ad3a2SMark Johnston
874b4ad3a2SMark Johnstonio:::start
884b4ad3a2SMark Johnston{
894b4ad3a2SMark Johnston        @[args[1]->device_name, execname, pid] = sum(args[0]->bio_bcount);
904b4ad3a2SMark Johnston}
914b4ad3a2SMark Johnston
924b4ad3a2SMark JohnstonEND
934b4ad3a2SMark Johnston{
94*af1e9f5aSChristian Brueffer        printf("%10s %20s %10s %15s\\n", "DEVICE", "APP", "PID", "BYTES");
95*af1e9f5aSChristian Brueffer        printa("%10s %20s %10d %15@d\\n", @);
964b4ad3a2SMark Johnston}
974b4ad3a2SMark Johnston.Ed
984b4ad3a2SMark Johnston.Sh COMPATIBILITY
994b4ad3a2SMark JohnstonThis provider is not compatible with the
1004b4ad3a2SMark Johnston.Nm io
1014b4ad3a2SMark Johnstonprovider found in Solaris, as its probes use native
1024b4ad3a2SMark Johnston.Fx
1034b4ad3a2SMark Johnstonargument types.
1044b4ad3a2SMark Johnston.Sh SEE ALSO
1054b4ad3a2SMark Johnston.Xr dtrace 1 ,
1064b4ad3a2SMark Johnston.Xr devstat 9 ,
1074b4ad3a2SMark Johnston.Xr SDT 9
1084b4ad3a2SMark Johnston.Sh HISTORY
1094b4ad3a2SMark JohnstonThe
1104b4ad3a2SMark Johnston.Nm io
1114b4ad3a2SMark Johnstonprovider first appeared in
1124b4ad3a2SMark Johnston.Fx
1134b4ad3a2SMark Johnston9.2 and 10.0.
1144b4ad3a2SMark Johnston.Sh AUTHORS
1154b4ad3a2SMark JohnstonThis manual page was written by
1164b4ad3a2SMark Johnston.An Mark Johnston Aq Mt markj@FreeBSD.org .
1174b4ad3a2SMark Johnston.Sh BUGS
1184b4ad3a2SMark JohnstonThe
1194b4ad3a2SMark Johnston.Fn io:::wait-start
1204b4ad3a2SMark Johnstonand
1214b4ad3a2SMark Johnston.Fn io:::wait-done
1224b4ad3a2SMark Johnstonprobes are not currently implemented on
1234b4ad3a2SMark Johnston.Fx .
124