#!/usr/sbin/dtrace -s #pragma D option quiet ::fop_read:entry /self->trace == 0 && (((vnode_t *)arg0)->v_path)/ { vp = (vnode_t*)arg0; uio = (uio_t*)arg1; self->path=stringof(vp->v_path); self->trace = 1; @rio[stringof(vp->v_path), "logical"] = count(); @rbytes[stringof(vp->v_path), "logical"] = sum(uio->uio_resid); } ::fop_read:return /self->trace == 1/ { self->trace = 0; } io::bdev_strategy:start /self->trace/ { @rio[self->path, "physical"] = count(); @rbytes[self->path, "physical"] = sum(args[0]->b_bcount); } tick-1s { printf ("\nrio\n"); printa ("%-60s %10s %10@d\n", @rio); trunc (@rio); printf ("\nrbytes\n"); printa ("%-60s %10s %10@d\n", @rbytes); trunc (@rbytes); }