lockbyproc.d
位于DTraceToolkit的Locks
文件夹下,其功能是统计进程在获得“adaptive mutex
”等待时间的总和。脚本代码就一行(略去版权信息):
lockstat:::adaptive-block { @time[execname] = sum(arg1); }
脚本代码分析如下:
定义一个以可执行程序名字(execname
)为key
的aggregation
(time
)。监听所有lockstat Provider
的adaptive-block
probe
,其中arg1
参数包含的是等待时间(单位是ns
)。当probe
触发时,调用sum
函数。最后脚本退出时,产生进程等待时间总和的统计。
执行脚本,输出如下:
bash-3.2# ./lockbyproc.d
dtrace: script './lockbyproc.d' matched 1 probe
^C
sched 19270
java 156943
可以看到,java
程序等待获得mutex
时间比较长。
参考资料:
(1)lockstat Provider。