|
该系列前面的文章
OpenSolaris新特性解析之一:Opensolaris之前身今世 http://bbs.chinaunix.net/viewthread.php?tid=1221539
OpenSolaris新特性解析之二:ZFS http://bbs.chinaunix.net/viewthread.php?tid=1234907
OpenSolaris新特性解析之三:SMF http://bbs.chinaunix.net/viewthread.php?tid=1273723
OpenSolaris新特性解析之四:FMA http://bbs.chinaunix.net/viewthread.php?tid=1295237
OpenSolaris新特性解析之五: dtrace1-基础 http://bbs.chinaunix.net/viewthread.php?tid=1315928
OpenSolaris新特性解析之五: dtrace2-语法 http://bbs2.chinaunix.net/viewthread.php?tid=1353868
这部分准备介绍Dtrace相关的工具集。
第一个就是Dtrace的tools kit,大家可以到 http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/ 这个网址去下,把那个压缩包下载到本地后解压就可以了。解压后会出现一个目录DTraceToolkit-0.99。进入这个目录后,我们ls一下,可以看到下面的目录和文件
Apps errinfo iopattern Mem Python Tcl
Bin Examples iosnoop Misc README User
Code execsnoop iotop Net Ruby Version
Cpu FS Java Notes rwsnoop Zones
dexplorer Guide JavaScript opensnoop rwtop
Disk hotkernel Kernel Perl Shell
Docs hotuser License Php Snippits
dtruss Include Locks Proc statsnoop
dvmstat install Man procsystime System
这其中大部分都是目录。 哦,对了,写到这里发现还没有介绍到底什么是Dtrace tools kit,这个工具集说白了就是一些dtrace脚本的集合,很多工程师在Dtrace的使用过程中发现很多时候我们需要用Dtrace的场合是相同的,我们用dtrace来解决的问题也是相同或者相似的,在这样的情况下,就有一些工程师站出来把这些常用的Dtrace脚本,写好,发布到 opensolaris的社区里面,成为了opensolaris社区的一个项目,后来更多的工程师看到这个是个好东西,也加入进来,对已有的 dtrace脚本进行改进,也增加了很多其他的常用的Dtrace脚本,到现在就成为了我们看到的样子。
我们看到这个有很多目录,这些目录实际上就是这些Dtrace脚本的组织方式,比如一个Dtrace脚本是和磁盘相关的,就放到Disk这个目录下,大家可以看到,现在的这个工具集里面的脚本基本上已经覆盖了我们日常使用的方方面面。
我们以Disk为例,cd Disk, 我们看到有个Readme,里面是对这一分类的说明。如果我们需要看到里面的每个脚本的作用是什么,有两个办法,第一个,是到 DTraceToolkit-0.99/Man 这个目录下,看Readme,里面有如何把工具集的manpage加入的系统的方法,里面说得非常清晰,这里就不复述了,把manpage加入到系统后,我们就可以对工具集里面的每一个脚本做man,看它的详细解释。第二个方法,在DTraceToolkit-0.99/Docs/这个目录下面有个文件叫做Contents,我们vim它,就可以看到工具集里面的每个脚本是起什么作用的。
工具集一方面提供给了我们最有用的Dtrace脚本让我们不用自己去写,另外一方面也是学习Dtrace的一个很好的Example,当我们自己需要去写一些Dtrace脚本的时候,我们可以直接copy里面的一些语句。
好了,工具集这部分写到这里,都是些很简单的东西,里面的每一个脚本的怎么执行,看我前面的文章里面写的dtrace脚本的执行方法。执行之前记得su到root。
第二部分是Dtrace与开发工具Netbeans的结合。利用Netbeans这个集成开发环境,我们有了Dtrace的可视化开发工具,并且Netbeans还可以通过很简单的向导,把我们的dtrace脚本执行结果图形化!
netbeans的下载地址www.netbeans.org
下载安装好了之后让我们启动netbeans,然后选择tools->plugins,在*出窗口里面我们选择available plugins那一项,然后我们看到里面有个插件名字叫做dtrace,我们把它勾上,然后install,这样netbeans就会到网上去把这个插件下载下来,然后安装上,这样我们的netbeans就有了dtrace的开发能力。看图1
然后我们在netbean的windows菜单下面选择dtrace,这样在导航栏里面就出现了dtrace的开发界面。看图2
大家可以看到这个插件实际上是有两部分,一部分是toolkit,也就是说这个插件把前面我们的说的那个Dtracestools kit已经集成了进来,第二部分,是个叫chime的东西,这个东西也是社区做的,他可以把我们dtrace脚本的输出图形化,它里面带了一些例子,大家可以运行看看,是不是图形化了。图3是检测中断的一个Dtrace脚本的输出,图形化的结果,不错吧。
那怎么将dtrace脚本的输出图形化呢?下面是一个步骤
比如我们有个Dtrace脚本,放在/lab/dtrace下, 脚本内容
sysinfo:::pswitch
{
@prog[execname]=count();
}
这个脚本是用来检测跨上下文切换的,这种调用是非常费时的一种操作
步骤:
进入到Chime的主窗体,点击File->New Display,进入如下Create New Chime Display窗口。
图-4
可以在Title中编辑自己希望显示的名字。点击下一步进入到Set Dtrace Program窗口,并将Program String下面的文本框填入刚才上述的Dtrace脚本,在这里可以点击Check Complie来看一看写入的Dtrace脚本是否编译正确。如下图。
图-5
点击下一步,进入Set Cleared Aggreagtions窗体,这一步是选择是否清空以前聚合的数据,如果不清除,就会将上次运行的结果与这次运行的结果聚合在一起,我们选择Clear all aggregations即可。
图-6
进入下一步,进入Specify Columns窗体,这个窗体要求用户指定显示中的三列,在这里我们显示三项:程序的名字Program Name,在上一秒内该程序在系统内执行的次数 Frequecy, 历史信息,这一列最终会形成一条曲线,通过点击Insert即可完成上述的工作。
图-7
下面要做的事情是,告诉Chime第一列 Program Name要显示什么,首先选定上面窗体中的Program Name,点击Specify,
进入下面的窗体。
图-8
由于系统已��默认地将脚本中的聚会的第一项为Program Name指定好了,所以不需要改什么,继续为Frequency 设置该显示什么。进入到Frequency的设置页面如下图。
点击Aggregation Value
选择聚合的名字progs
图-9
点击 Next
这样就进入设置Frequency这列性质的窗口,我们要做如下的事情
选中 Value Per Second
设置显示格式(Format)为:#,##0
最后下一步
图-10
下面我们来制定History这列,这一列将会生产一条随时间变化的曲线,因为他是Frequency的历史值,我们选择Alternate View,并指定Source Column为Frequency,指定好后下一步,
图-11 进入到History一列的的性质窗口。在这里我们希望生成一条曲线。所以选中Sparkline,下一步。
图-12 最后确认各列没有问题
图-13 进入到测试窗体,Test Run the Display,直接点击Run Display
图-14 我们最后来到Chime的最初窗口,在Trace Group下面找到New Displays,然后选择我们的显示,就可以运行了。
这部分就写道这里了,Dtrace部分并没有完,还有最后一部分实例分析。
附件是dtrace tools kit的一个介绍,大家可以看看。
1.png (77.93 KB) 2009-2-18 18:24
点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小
2.png (63.97 KB) 2009-2-18 18:24
点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小
3.png (88.53 KB) 2009-2-18 18:24
点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小
2009-2-18 18:24
下载次数: 0
dtt_present.pdf (1017.74 KB) |
|