#!/usr/sbin/dtrace -s #pragma D option quiet #pragma D option dynvarsize=10000000 pid$target::__1cKopen_table6FpnDTHD_pnKTABLE_LIST_pnLst_mem_root_pbI_pnIst_table__:entry, pid$target::__1cRclose_open_tables6FpnDTHD__v_:entry { self->follow = 1; self->mysqld_func = probefunc; @fcount[probefunc] = count(); self->tid = tid; } pid$target::__1cKopen_table6FpnDTHD_pnKTABLE_LIST_pnLst_mem_root_pbI_pnIst_table__:return, pid$target::__1cRclose_open_tables6FpnDTHD__v_:return / self->follow / { self->follow = 0; } sched:::preempt / self->follow / { self->preempt = 1; } sched:::remain-cpu /self->preempt/ { self->preempt = 0; } sched:::off-cpu /self->preempt/ { /* * If we were told to preempt ourselves, what mysqld function are we in? */ @pcount[self->mysqld_func] = count(); self->preempt = 0; } END { printf("Number times function executed\n"); printa(@fcount); printf("Number times preempted when in function\n"); printa(@pcount); }