#!/usr/sbin/dtrace -s #pragma D option flowindent :::BEGIN { trace("Microseconds"); } syscall:::entry /pid == $target/ { self->start = timestamp; trace((timestamp - self->start)/1000); self->trace = 1; } syscall:::return /pid == $target/ { trace((timestamp - self->start)/1000); self->trace = 0; } vminfo::: /pid == $target && self->trace == 1/ { trace((timestamp - self->start)/1000); } io:::start /pid == $target && self->trace == 1/ { waiting[args[0]->b_blkno] = self->start; trace((timestamp - self->start)/1000); } io:::done /waiting[args[0]->b_blkno]/ { self->start = waiting[args[0]->b_blkno]; trace((timestamp - self->start)/1000); waiting[args[0]->b_blkno] = 0; }