dtrace_io —
a
DTrace provider for tracing events related to disk I/O
io:::start(
struct
bio *,
struct
devstat *);
io:::done(
struct
bio *,
struct
devstat *);
The
io provider allows the tracing of disk I/O
events. The
io:::start() probe fires when a I/O
request is about to be sent to the backing driver of a
disk(9) object. This occurs after all
GEOM(4) transformations have been performed on
the request. The
io:::done() probe fires when a
I/O request is completed. Both probes take a
struct
bio * representing the I/O request as their first argument. The second
argument is a
struct devstat * for the
underlying
disk(9) object.
The fields of
struct bio are described in the
g_bio(9) manual page, and the fields of
struct devstat are described in the
devstat(9) manual page. Translators for the
bufinfo_t and
devinfo_t D types are defined in
/usr/lib/dtrace/io.d.
- /usr/lib/dtrace/io.d
- DTrace type and translator definitions for the
io provider.
The following script shows a per-process breakdown of total I/O by disk device:
#pragma D option quiet
io:::start
{
@[args[1]->device_name, execname, pid] = sum(args[0]->bio_bcount);
}
END
{
printf("%10s %20s %10s %15s\n", "DEVICE", "APP", "PID", "BYTES");
printa("%10s %20s %10d %15@d\n", @);
}
This provider is not compatible with the
io
provider found in Solaris, as its probes use native
FreeBSD argument types.
dtrace(1),
devstat(9),
SDT(9)
The
io provider first appeared in
FreeBSD 9.2 and 10.0.
This manual page was written by
Mark Johnston
<
[email protected]>.
The
io:::wait-start() and
io:::wait-done() probes are not currently
implemented on
FreeBSD.