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