没有合适的资源?快使用搜索试试~ 我知道了~
首页探索Illumos动态跟踪技术入门教程
本文档是关于dtrace技术的使用说明指南,适用于illumos平台。illumos是一个基于Berkeley BSD系统的动态追踪工具,其设计与实现借鉴了Linux中的tracing技术。dtrace是一种强大的系统诊断和分析工具,它允许用户实时观察和控制操作系统内部的行为,从而深入理解程序运行过程,定位问题和优化性能。
在文档中,作者遵循了Public Documentation License Version 1.01(简称“许可证”)的规定,这意味着读者必须遵守此许可证的条款才能使用文档内容。在阅读时,应注意文档中提及的一些商标,如illumos、Sun Microsystems、Solaris、Sun、SPARC等,这些均为Oracle公司及其子公司在美国和其他国家注册或受许可使用的品牌。
部分章节可能介绍了dtrace的基本概念,包括如何设置探针(probes)来监视特定事件,例如进程启动、网络数据包发送或接收、内存操作等。dtrace语法和用法也会被详细阐述,包括如何编写探测器(detector)、处理器(processor)和动作(action),以及如何构建复杂的探查链路(traceroute)来跟踪事件的传播路径。
此外,文档可能会包含示例和实战案例,展示如何在实际环境中应用dtrace进行故障排查、性能调优和代码审查。对于初学者,这部分内容尤为重要,可以帮助他们快速上手并理解dtrace的强大功能。
值得注意的是,由于文档可能包含第三方开发的材料,这部分内容可能涉及到与Berkeley BSD系统和Linux内核的集成,以及如何利用这些开源技术改进和扩展dtrace的功能。
这篇dtrace技术使用说明指南是深入学习和掌握这一工具的宝贵资源,无论是对系统管理员、开发者还是性能工程师来说,都是一份不可或缺的参考资料。通过阅读和实践,读者可以提升对操作系统内部运作的理解,提高问题解决和性能优化的能力。
PREFACE
DTrace allows illumos developers and administrators to:
• Implement custom scripts that use the DTrace facility
• Implement layered tools that use DTrace to retrieve trace data
This guide will teach you everything you need to know about using DTrace. Basic familiarity with a
programming language such as C or a scripting language such as awk(1) or perl(1) will help you learn
DTrace and the D programming language faster, but you need not be an expert in any of these areas. If you
have never written a program or script before in any language, the section called “Related Information”
provides references to other documents you might find useful.
How This Book Is Organized
Chapter 1 provides a whirlwind tour of the entire DTrace facility and introduces readers to the D program-
ming language. Chapter 2, Chapter 3, and Chapter 4 then discuss the fundamentals of D in greater detail,
and explain how D programs are converted into dynamic instrumentation. This initial group of chapters
should be read first by all readers.
Chapter 5, Chapter 6, Chapter 7, and Chapter 8 discuss the remaining D language features, most of which
will be familiar already to C, C++, and Java
™
programmers. Readers who are unfamiliar with any of these
languages should read these chapters; more experienced programmers may wish to proceed directly to
later chapters.
Chapter 9 and Chapter 10 discuss DTrace’s powerful primitive for aggregating data and the set of built-in
actions that can be used to build tracing experiments. All readers should carefully read these chapters.
Chapter 11 describes the DTrace policies for buffering data and how these can be configured. This chapter
should be read by users once they are familiar with constructing and running D programs.
Chapter 12 describes the D output formatting actions as well as the default policy for formatting trace
data. Readers who are familiar with the C
printf
function can rapidly skim this chapter. Readers who
have never seen printf before should read this chapter carefully.
Chapter 13 discusses the DTrace facility for speculatively committing data to a trace buffer. This chapter
should be read by users who need to use DTrace in a situation where data must be traced prior to
understanding whether it is relevant to the question at hand.
Chapter 14 provides a complete reference for the
dtrace
command-line utility, similar to the corresponding
on-line manual page. Readers may wish to refer to this chapter when various command-line options are
presented elsewhere in the book. Chapter 15 then discusses how the
dtrace
utility can be used to construct
executable D scripts and process their command-line arguments, and Chapter 16 describes the options that
can be tuned on the command-line or from within a D program itself.
The group of chapters beginning with Chapter 17 and ending with Chapter 32 discuss the various DTrace
providers that can be used to instrument various aspects of the illumos system. All readers should skim
these chapters to familiarize themselves with the various providers, and then return back to read particular
chapters in detail as needed.
Chapter 33 discusses examples of using DTrace to instrument user processes. Chapter 34 describes how
application programmers can add customized DTrace providers and probes to user applications. Readers
who are user program developers or administrators and wish to use DTrace to investigate user process
behavior should read these chapters.
xiv
Related Information
Chapter 35 and the remaining chapters discuss advanced topics such as security, versioning, and stability
attributes of DTrace, and how to perform boot-time and post-mortem tracing with DTrace. These chapters
are intended for advanced DTrace users.
Related Information
These books and papers are recommended and related to the tasks that you need to perform with DTrace:
•
Kernighan, Brian W. and Ritchie, Dennis M. The C Programming Language. Prentice Hall, 1988. ISBN
0–13–110370–9
• Vahalia, Uresh. UNIX Internals: The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2
•
Mauro, Jim and McDougall, Richard. Solaris Internals: Core Kernel Components. Sun Microsystems
Press, 2001. ISBN 0-13-022496-0
•
Gregg, Brendan and Mauro, Jim. DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD.
Prentice Hall, 2011. ISBN 0-13-209151-8
You can share your DTrace experiences and scripts with the rest of the DTrace community on the DTrace
discussion mailing list.
Additional Documentation
Additional resources can be found on the illumos website, including the manual pages referenced through-
out this book, and additional books and guides for using illumos and its tools.
We Welcome Your Comments
The DTrace and illumos communities are interested in improving this documentation and welcome your
comments and suggestions. To share your comments, either join and e-mail the DTrace discussion mailing
list or go to the illumos-docbooks repository and click "Issues".
Typographic Conventions
The following table describes the typographic conventions that are used in this book.
Table 1: Typographic Conventions
Typeface Meaning Example
AaBbCc123 The names of commands, files, and
directories, and onscreen computer output
Edit your .login file.
Use ls -a to list all files.
machine_name% you
have mail.
xv
PREFACE
Table 1: (continued)
Typeface Meaning Example
AaBbCc123 What you type, contrasted with onscreen
computer output
machine_name% su
Password:
aabbcc123 Placeholder: replace with a real name or
value
The command to remove a file is
rm filename.
AaBbCc123 Book titles, new terms, and terms to be
emphasized
Read Chapter 6 in the User’s
Guide.
A cache is a copy that is stored
locally.
Do not save the file.
Note: Some emphasized items
appear bold online.
Shell Prompts in Command Examples
The following table shows the default UNIX
®
system prompt and superuser prompt for the C shell, Bourne
shell, and Korn shell.
Table 2: Shell Prompts
Shell Prompt
C shell machine_name%
C shell for superuser machine_name#
Bourne shell and Korn shell $
Bourne shell and Korn shell for superuser #
xvi
Chapter 1
Introduction
WELCOME to Dynamic Tracing in the illumos Operating System! If you have ever wanted to understand
the behavior of your system, DTrace is the tool for you. DTrace is a comprehensive dynamic tracing facility
that is built into illumos that can be used by administrators and developers on live production systems to
examine the behavior of both user programs and of the operating system itself. DTrace enables you to
explore your system to understand how it works, track down performance problems across many layers of
software, or locate the cause of aberrant behavior. As you’ll see, DTrace lets you create your own custom
programs to dynamically instrument the system and provide immediate, concise answers to arbitrary
questions you can formulate using the DTrace D programming language. The first section of this chapter
provides a quick introduction to DTrace and shows you how to write your very first D program. The rest
of the chapter introduces the complete set of rules for programming in D as well as tips and techniques for
performing in-depth analysis of your system. You can share your DTrace experiences and scripts with the
rest of the DTrace community on the DTrace discussion mailing list. All of the example scripts presented
in this guide can be found on your illumos system in the directory /usr/demo/dtrace.
1.1 DTrace on other Operating Systems
Since the source to DTrace was made available in 2005, it has been ported to several other operating
systems including:
• Mac OS X
• FreeBSD
• Two different ports to Linux
• Sony Playstation Vita
• QNX
This guide has a focus on the illumos Operating System, but much of the content is applicable to all
Operating Systems with DTrace.
1
1. INTRODUCTION
1.2 Getting Started
DTrace helps you understand a software system by enabling you to dynamically modify the operating
system kernel and user processes to record additional data that you specify at locations of interest, called
probes. A probe is a location or activity to which DTrace can bind a request to perform a set of actions,
like recording a stack trace, a timestamp, or the argument to a function. Probes are like programmable
sensors scattered all over your illumos system in interesting places. If you want to figure out what’s going
on, you use DTrace to program the appropriate sensors to record the information that is of interest to you.
Then, as each probe fires, DTrace gathers the data from your probes and reports it back to you. If you
don’t specify any actions for a probe, DTrace will just take note of each time the probe fires.
Every probe in DTrace has two names: a unique integer ID and a human-readable string name. We’re
going to start learning DTrace by building some very simple requests using the probe named
BEGIN
,
which fires once each time you start a new tracing request. You can use the dtrace(1M) utility’s
-n
option
to enable a probe using its string name. Type the following command:
# dtrace -n BEGIN
After a brief pause, you will see DTrace tell you that one probe was enabled and you will see a line of
output indicating that the
BEGIN
probe fired. Once you see this output,
dtrace
remains paused waiting
for other probes to fire. Since you haven’t enabled any other probes and
BEGIN
only fires once, press
Control-C in your shell to exit dtrace and return to your shell prompt:
# dtrace -n BEGIN
dtrace: description ’BEGIN’ matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN
^C
#
The output tells you that the probe named
BEGIN
fired once and both its name and integer ID, 1, are
printed. Notice that by default, the integer name of the CPU on which this probe fired is displayed. In this
example, the CPU column indicates that the
dtrace
command was executing on CPU 0 when the probe
fired.
You can construct DTrace requests using arbitrary numbers of probes and actions. Let’s create a simple
request using two probes by adding the
END
probe to the previous example command. The
END
probe
fires once when tracing is completed. Type the following command, and then again press Control-C in
your shell after you see the line of output for the BEGIN probe:
# dtrace -n BEGIN -n END
dtrace: description ’BEGIN’ matched 1 probe
dtrace: description ’END’ matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN
^C
0 2 :END
#
As you can see, pressing Control-C to exit
dtrace
triggers the
END
probe.
dtrace
reports this probe firing
before exiting.
Now that you understand a little bit about naming and enabling probes, you’re ready to write the DTrace
version of everyone’s first program, “Hello, World.” In addition to constructing DTrace experiments on the
2
剩余361页未读,继续阅读
书香度年华
- 粉丝: 1w+
- 资源: 383
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ES管理利器:ES Head工具详解
- Layui前端UI框架压缩包:轻量级的Web界面构建利器
- WPF 字体布局问题解决方法与应用案例
- 响应式网页布局教程:CSS实现全平台适配
- Windows平台Elasticsearch 8.10.2版发布
- ICEY开源小程序:定时显示极限值提醒
- MATLAB条形图绘制指南:从入门到进阶技巧全解析
- WPF实现任务管理器进程分组逻辑教程解析
- C#编程实现显卡硬件信息的获取方法
- 前端世界核心-HTML+CSS+JS团队服务网页模板开发
- 精选SQL面试题大汇总
- Nacos Server 1.2.1在Linux系统的安装包介绍
- 易语言MySQL支持库3.0#0版全新升级与使用指南
- 快乐足球响应式网页模板:前端开发全技能秘籍
- OpenEuler4.19内核发布:国产操作系统的里程碑
- Boyue Zheng的LeetCode Python解答集
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功