在使用 DTrace 的功能之前,DTrace 设备必须存在。 使用如下的命令装载此设备:
DTrace 支持现在应该可以使用了。 管理员现在可以使用如下的命令查看所有的探测器:
所有的输出都传递给 more
工具,
因为它们会很快超出屏幕的显示区域。此时,DTrace
应该被认为是能够正常工作的了。现在是该考察工具包的时候了。
工具包是实现写好的一堆脚本,与 DTrace 一起运行来收集系统信息。 有脚本用来检查已打开的文件,内存,CPU 使用率和许多东西。使用如下的命令解开脚本:
使用 cd
命令切换到那个目录,
并修改所有文件的可执行权限,把那些名字小写的文件权限改为
755
。
所有这些脚本都需要修改它们的内容。那些指向
/usr/bin/ksh
需要修改成
/usr/local/bin/ksh
,另外使用
/usr/bin/sh
需要变更为
/bin/sh
,最后还有使用
/usr/bin/perl
的需要变更为
/usr/local/bin/perl
。
此刻还需谨慎提醒一下读者 FreeBSD 的 DTrace 支持仍是 不完整的 和 试验性 的。 这些脚本中的大多数都无法运行,因为它们过于针对 Solaris™ 或者使用了目前还不支持的探测器。
在撰写这篇文章的时候,DTrace 工具包中只有两个脚本在
FreeBSD 上是完全支持的:
hotkernel
和 procsystime
脚本。这两个脚本便是我们下一部分将要探讨的:
hotkernel
被设计成验明哪个函数占用了内核时间。
正常运行的话,它将生成类似以下的输出:
系统管理员必须使用 Ctrl+C 组合键停止这个进程。 紧接着中止之后,脚本便会一张内核函数与测定时间的列表, 使用增量排序输出:
这个脚本也能与内核模块一起工作。要使用此特性,
用 -m
标志运行脚本:
procsystime
脚本捕捉并打印给定 PID 的系统调用时间。
在下面的例子中,新生成了一个 /bin/csh
实例。procsystime
执行后则等待在新运行的
csh
上键入一些命令。 这是测试的结果:
正如显示的那样,read
系统调用似乎使用了最多的纳秒单位时间,
getpid()
系统调用使用了最少的时间。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.