modcalls.d
位于DTraceToolkit的Kernel
文件夹下,其功能是统计不同模块调用kernel
函数的次数。脚本代码就一行(略去版权信息):
fbt:::entry { @calls[probemod] = count(); }
脚本代码分析如下:
监听fbt Provider
的 entry probe
(fbt Provider
几乎提供了对所有kernel
函数的entry
和exit
的trace
)。定义calls
这个aggregation
,用probemod
做key
(probemod
记录了当前probe
的模块名)。当probe
触发后,把calls
里相应模块的统计次数加1
。
执行脚本,输出如下:
Nans-MacBook-Pro:Kernel root# ./modcalls.d
dtrace: script './modcalls.d' matched 47940 probes
^C
com.apple.driver.AppleAPI 5
com.apple.driver.AppleOSXWatchdog 7
com.apple.driver.AppleUSBComposite 9
com.apple.driver.AppleUSBTCButtons 17
......