#!/usr/sbin/dtrace -s #pragma D option quiet sched:::sleep / execname == "tds" / { self->sobj = (curlwpsinfo->pr_stype == SOBJ_MUTEX ? "kernel mutex" : curlwpsinfo->pr_stype == SOBJ_RWLOCK ? "kernel RW lock" : curlwpsinfo->pr_stype == SOBJ_CV ? "cond var" : curlwpsinfo->pr_stype == SOBJ_SEMA ? "kernel semaphore" : curlwpsinfo->pr_stype == SOBJ_USER ? "user-level lock" : curlwpsinfo->pr_stype == SOBJ_USER_PI ? "user-level PI lock" : curlwpsinfo->pr_stype == SOBJ_SHUTTLE ? "shuttle" : "unknown"); self->wchan = curlwpsinfo->pr_wchan; @s[execname,tid,self->sobj,self->wchan] = count(); } sched:::sleep / execname == "tds" / { @slp[execname,tid,ustack(1)] = count(); } END { printf("%-14s %-8s %-20s %-20s %s\n", "NAME", "TID","SOBJ", "CV_ADDR", "CNT"); printa("%-14s %-8d %-20s %-20x %@d\n",@s); printf("\n\n"); printf("%-10s %-20s %-8s %-30s\n", "CNT", "NAME", "TID", "Sleeping On..."); printa("%-10@d %-20s %-8d %-30k",@slp); }