Solaris 动态跟踪指南

前言

DTrace 是一个用于 Solaris™ 操作系统的全面的动态跟踪框架。DTrace 提供一个强大的基础结构,使管理员、开发者和服务人员能简明地回答有关操作系统和用户程序行为的任意问题。《Solaris 动态跟踪指南》介绍如何使用 DTrace 观察、调试和调优系统行为。本书还包含一套完整的关于捆绑的 DTrace 观察工具和 D 编程语言的参考资料。


注 –

此 Solaris 发行版支持使用以下 SPARC® 和 x86 系列处理器体系结构的系统: UltraSPARC®、SPARC64、AMD64、Pentium 和 Xeon EM64T。支持的系统可以在 http://www.sun.com/bigadmin/hcl/ 上的 Solaris OS: Hardware Compatibility Lists 中找到。本文档列举了在不同类型的平台上进行实现时的所有差别。

在本文档中,术语 "x86" 指使用与 AMD64 或 Intel Xeon/Pentium 产品系列兼容的处理器生产的 64 位和 32 位系统。若想了解本发行版支持哪些系统,请参见 Solaris 10 硬件兼容性列表


目标读者

如果您想了解您的系统的行为,那么 DTrace 正是您所需要的工具。DTrace 是一个内置于 Solaris 中的全面的动态跟踪工具。DTrace 工具可用于检查用户程序的行为。DTrace 工具还可用于检查操作系统的行为。DTrace 可由系统管理员或应用程序开发者使用,它适用于实时生产系统。DTrace 允许您查看系统,以便了解其工作方式、在软件的多个层之间跟踪性能问题或找出导致异常行为的原因。如您所见,可以使用 DTrace 来创建自己的自定义程序,以便动态地检测系统,并对可用 DTrace D 编程语言阐明的任意问题作出快速简明的回答。

DTrace 允许所有 Solaris 用户执行以下操作:

DTrace 允许 Solaris 开发者和管理员执行以下操作:

本指南将讲授使用 DTrace 时需要了解的所有知识。了解编程语言(如 C)或脚本语言(如 awk(1)perl(1))的基本知识,有助于更快地学习 DTrace 和 D 编程语言,但您并不需要精通其中的任何领域。如果您以前从未使用任何语言编写过程序或脚本,相关信息中提供了一些其他文档,或许对您有所帮助。

本书的结构

第 1 章提供整个 DTrace 工具的简要说明并向读者介绍了 D 编程语言。第 2 章第 3 章第 4 章将更加详细地讨论 D 的基本知识,并说明了 D 程序如何转换为动态检测过程。所有读者都应首先阅读前几章的内容。

第 5 章第 6 章第 7 章第 8 章讨论 D 语言的其他功能,其中的大部分内容已为 C、C++ 和 JavaTM 程序员所熟悉。如果读者不熟悉上述语言中的任何一种语言,则应先阅读这几章,有经验的程序员可以直接学习后面的内容。

第 9 章第 10 章 讨论 DTrace 用于聚合数据的强大的元语功能,以及可用于生成跟踪实验脚本的内置操作集。所有读者都应认真阅读这几章。

第 11 章介绍 DTrace 缓冲数据的策略及如何配置这些策略。读者应在熟悉如何构造和运行 D 程序后阅读本章。

第 12 章介绍 D 输出格式化操作和用于格式化跟踪数据的缺省策略。熟悉 C printf() 函数的读者快速浏览一下本章即可。不了解 printf() 的读者应仔细阅读本章。

第 13 章讨论 DTrace 工具以推理方式向跟踪缓冲区提交数据。有时,必须先跟踪数据才能了解数据与目前的问题是否相关,需要在这种情况下使用 DTrace 的用户应阅读本章。

第 14 章提供 dtrace 命令行实用程序的完整参考(类似于相应的联机手册页)。用户可能会在本书中其他位置出现各种命令行选项时参考本章。接下来第 15 章讨论如何使用 dtrace 实用程序构造可执行 D 脚本并处理其命令行参数,第 16 章介绍可在命令行或在 D 程序(自身)内部调优的选项。

第 17 章第 32 章的这些章节讨论可用于检测 Solaris 系统各个方面的各种 DTrace 提供器。所有读者都应浏览这些章节,熟悉各种提供器,并在需要时再仔细阅读特定的章节。

第 33 章讨论使用 DTrace 检测用户进程的示例。第 34 章介绍应用程序程序员如何向用户应用程序添加自定义的 DTrace 提供器和探测器。希望使用 DTrace 查明用户进程行为的用户程序开发者或管理员应阅读这几章。

第 35 章和其余的章节讨论高级主题,如 DTrace 的安全性、版本控制和稳定性属性,及如何使用 DTrace 执行引导时和事后跟踪。这几章主要针对高级 DTrace 用户。

相关信息

建议您阅读以下与使用 DTrace 执行的任务有关的书籍和文章:

您可以在 Web 站点(网址为 http://www.sun.com/bigadmin/content/dtrace/)上与其他 DTrace 社区人员共享您的 DTrace 经验和脚本。

文档、支持和培训

Sun Web 站点提供有关以下附加资源的信息:

印刷约定

下表介绍了本书中的印刷约定。

表 P–1 印刷约定

字体或符号 

含义 

示例 

AaBbCc123

命令、文件和目录的名称;计算机屏幕输出 

编辑 .login 文件。

使用 ls -a 列出所有文件。

machine_name% you have mail.

AaBbCc123

用户键入的内容,与计算机屏幕输出的显示不同 

machine_name% su

Password:

aabbcc123

要使用实名或值替换的命令行占位符 

删除文件的命令为 rm filename

AaBbCc123

保留未译的新词或术语以及要强调的词 

这些称为 Class 选项。

注意:有些强调的项目在联机时以粗体显示。

新词术语强调

新词或术语以及要强调的词 

高速缓存是存储在本地的副本。

保存文件。

《书名》 

书名 

阅读《用户指南》的第 6 章。

命令中的 shell 提示符示例

下表列出了 C shell、Bourne shell 和 Korn shell 的缺省 UNIX® 系统提示符和超级用户提示符。

表 P–2 shell 提示符

shell 

提示符 

C shell 提示符 

machine_name%

C shell 超级用户提示符 

machine_name#

Bourne shell 和 Korn shell 提示符 

$

Bourne shell 和 Korn shell 超级用户提示符 

#