Okay, with a bit more work I've solved my problem.
Here is the way to get microseconds for all processes (but display per process) over the interval.
#!/usr/sbin/dtrace -qs
dtrace:::BEGIN {
total = 0;
starttimestamp=timestamp;
printf("Starting...\n");
}
sched:::on-cpu
/pid!=0/
{
self->start = vtimestamp;
}
sched:::off-cpu
/self->start && pid!=0/
{
this->time = vtimestamp - self->start;
total += this->time;
@proctime[pid,uid,execname,curpsinfo->pr_psargs] = sum( this->time/1000 );
self->start = 0;
}
dtrace:::END {
printf("Elapsed time %d usec\n",(timestamp-starttimestamp)/1000);
printf("Total Time on CPU: %d us\n",total/1000);
printa(@proctime);
}