1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

DTrace profile provider详解

DTrace中,profile provider是一种特殊的provider,这个provider提供的probe起到一种类似定时器的作用。它可以根据用户设置的频率周期性地触发,这样用户就可以定期地采集感兴趣的数据,汇总以后作分析。

Profile provider提供两种probeprofile-ntick-n。其中n代表每秒probe触发的频率,n后面也可以带上时间后缀。举个例子:profile-100nsns表示纳秒),表示每100纳秒触发一次。两种probe的区别在于:每个CPU都会触发执行profile-n probe,而只有一个CPU会触发执行tick-n probe,所[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

DTrace tricks and tips (10) –如何判断CPU当前运行的是不是Idle线程

最近在看sched provider相关内容,搜索到一篇古老的帖子。帖子大意就是用“sched:::on-cpu”和“sched:::off-cpu”统计的线程运行时间和期望的不一样,原因是把Idle线程的运行时间计算进去了,需要过滤掉。在Solaris上过滤Idle线程的方法:

sched:::on-cpu
/curthread->t_pri != -1/
{
         ......
}

不同操作系统过滤Idle线程的方法如下(摘自DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

关于DTrace支持表达式中含有关键字的讨论

十一期间,在DTrace邮件讨论组里,FreeBSD的贡献者Mark Johnston提出了一个issue:因为有些DTrace的关键字不是c/c++的关键字,所以如果DTrace脚本和命令分析的code里包含这些关键字,执行就会出错。他举了个例子:FreeBSDg_consumer结构体里包含了provider这个成员,所以运行下面的DTrace的代码片就会报错:

fbt::g_vfs_done:entry {printf("%s", stringof(args[0]->bio_from->provider->name));}

所以他建议DTrace应该支持表[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...
1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

DTrace tricks and tips (8) –如何列出一个provider所有的probe

通常使用“dtrace -l”命令会列出所有的probe。如果只想列举某一个provider所有的probe,可以使用“dtrace -P provider -l”(注意P是大写字母)。举个例子,如果想列出“io”provider的所有probe:

bash-3.2# dtrace -P io -l
   ID   PROVIDER            MODULE                          FUNCTION NAME
 1274         io           genunix                           biodone d[......]

阅读全文