#!/usr/sbin/dtrace -s #pragma D option quiet sched::: { self->state = (curthread->t_state == 0x00 ? "free" : curthread->t_state == 0x01 ? "sleep" : curthread->t_state == 0x02 ? "run" : curthread->t_state == 0x04 ? "onproc" : curthread->t_state == 0x08 ? "zombie" : curthread->t_state == 0x10 ? "stopped" : "unknown"); @s[execname,tid,self->state] = count(); } sched:::sleep / curthread->t_state == 0x01 / { @w[execname,tid,ustack(10)] = count(); } END { printf("%-20s %-8s %-10s %-10s\n","NAME","TID","STATE","CNT"); printa("%-20s %-8d %-10s %@d\n",@s); printa(@w); }