最近在看sched provider
相关内容,搜索到一篇古老的帖子。帖子大意就是用“sched:::on-cpu
”和“sched:::off-cpu
”统计的线程运行时间和期望的不一样,原因是把Idle
线程的运行时间计算进去了,需要过滤掉。在Solaris
上过滤Idle
线程的方法:
sched:[......]
十一期间,在DTrace
邮件讨论组里,FreeBSD
的贡献者Mark Johnston
提出了一个issue
:因为有些DTrace
的关键字不是c/c++
的关键字,所以如果DTrace
脚本和命令分析的code
里包含这些关键字,执行就会出错。他举了个例子:FreeBSD
的g_consumer
结构体里包含了[……]
如果想知道一个probe
参数的具体信息,可以使用“-v
”参数获取。如下例所示:
bash-3.2# dtrace -lvn fbt::recv:entry
ID PROVIDER MODULE FUNCTION[......]
通常使用“dtrace -l
”命令会列出所有的probe。如果只想列举某一个provider所有的probe,可以使用“dtrace -P provider -l
”(注意P是大写字母)。举个例子,如果想列出“io
”provider的所有probe:
bash-3.2# dtrace -P io[......]
在使用copyin
和copyinstr
这两个函数时,要注意这两个函数所访问的地址空间一定要被应用程序已经访问过了。举个例子:
# dtrace -n syscall::open:entry'{ trace(copyinstr(arg0)); }' dtrace: description 's[......]