JavaScript is required to for searching.
跳过导航链接
退出打印视图
DTrace 用户指南     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  简介

2.  DTrace 基础知识

列出探测器

在 DTrace 中指定探测器

启用探测器

DTrace 操作基础知识

数据记录操作

trace() 函数

tracemem() 函数

printf() 函数

printa() 函数

stack() 函数

ustack() 函数

jstack() 函数

破坏性操作

处理破坏性操作

stop() 函数

raise() 函数

copyout() 函数

copyoutstr() 函数

system() 函数

内核破坏性操作

breakpoint() 函数

panic() 函数

chill() 函数

DTrace 聚合

DTrace 聚合语法

3.  使用 D 语言编写脚本

4.  使用 DTrace

索引

DTrace 聚合

对于与性能有关的问题,聚合的数据通常比离散的数据点更为有用。DTrace 提供了几个内置的聚合函数。如果某个聚合函数先应用于某个数据集合的各个子集,然后再应用于这些子集的分析结果,这样所得到的结果与该聚合函数应用于作为一个整体的集合所返回的结果相同。

DTrace 工具为聚合存储数目不断变化的数据条目。聚合函数仅存储当前的中间结果和函数所应用于的新元素。中间结果是基于每个 CPU 分别分配的。因为该分配方案不需要锁,所以其实现本质上是可伸缩的。

DTrace 聚合语法

DTrace 聚合采用下面的一般形式:

@name[ keys ] = aggfunc( args );

在此一般形式中,变量的定义如下所述:

name

聚合的名称,以 @ 字符作为前缀。

keys

以逗号分隔的 D 表达式列表。

aggfunc

某个 DTrace 聚合函数。

args

适用于聚合函数的参数的逗号分隔列表。

表 2-1 DTrace 聚合函数

函数名
参数
结果
count
count 函数被调用的次数。
sum
标量表达式
所指定表达式的总计值。
avg
标量表达式
所指定表达式的算术平均值。
min
标量表达式
所指定表达式中的最小值。
max
标量表达式
所指定表达式中的最大值。
lquantize
标量表达式、下界、上界、步长值
指定表达式的值的线性频数分布,其大小由指定的范围限定。此聚合函数递增最高存储桶中小于指定表达式的值。
quantize
标量表达式
所指定表达式的值的二次方频数分布。此聚合函数递增最高二次方存储桶中小于指定表达式的值。

示例 2-14 使用聚合函数

本示例使用 count 聚合函数来对每个进程的write(2) 系统调用进行计数。在 dtrace 命令终止之前,该聚合函数不输出任何数据。输出数据提供在 dtrace 命令处于活动状态期间收集的数据的汇总。

# cat writes.d
#!/usr/sbin/dtrace -s
syscall::write:entry]
{   @numWrites[execname] = count();
}

# ./writes.d
dtrace: script 'writes.d' matched 1 probe
^C
  dtrace                           1
  date                             1
  bash                             3
  grep                            20
  file                           197
  ls                             201