Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114166
  • 博文数量: 40
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-24 13:52
文章分类

全部博文(40)

文章存档

2009年(26)

2008年(14)

我的朋友

分类:

2009-02-18 18:31:15

该系列前面的文章



OpenSolaris新特性解析之一:Opensolaris之前身今世   
OpenSolaris新特性解析之二:ZFS                              
OpenSolaris新特性解析之三:SMF                             
OpenSolaris新特性解析之四:FMA                             
OpenSolaris新特性解析之五: dtrace1-基础               
OpenSolaris新特性解析之五: dtrace2-语法         

这部分准备介绍Dtrace相关的工具集。

第一个就是Dtrace的tools kit,大家可以到 这个网址去下,把那个压缩包下载到本地后解压就可以了。解压后会出现一个目录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的下载地址

下载安装好了之后让我们启动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
由于系统已
阅读(789) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~