You are on page 1of 4

AIX 的 Trace 简介

Trace 是 AIX 内 置 的 系 统 跟 踪 工 具 , 可 以 用 来 收 集 系 统 事 件

(system call,user code,kernel extension 等)和时间相关的

信息。是用来分析系统和应用程序性能和运行问题的强大工具。通

常情况下 trace 占用较少的系统资源,不会对系统产生加大的负载

压力,使用的 CPU 资源不会超过 5%,trace 一般使用循环方式运行

使时,只使用内存 buffer,当停止 trace 时,会将内存 buffer 中的

信息写入硬盘,此时会有一定的 I/O 负载(视内存 buffer 的大小)。

如果不使用循环方式运行 trace,则会不断产生 I/O 负载。

1. 理解跟踪程序

跟踪程序比传统的访问和给出系统维护的统计信息系统监视服

务更灵活。它并没有预先假定需要什么统计信息,相反,跟踪程序

提供了事件流并允许用户决定提取什么信息。与传统监视服务相比 ,

数据整理(系统事件向统计信息的转换)大大增加了系统检测。例

如,许多系统通过观察任务 A 的运行保存其最小、最大以及平均运

行时间并允许提取这一信息。

跟踪程序并不会显著地给检测加重数据整理,而是提供了一种

跟踪事件记录流(通常缩写为 events)。没有必要事先决定需要什

么统计信息;数据整理很大程度上独立于检测。用户可以从事件流
中选择决定任务 A 的最小、最大和平均时间。但是也有以下可能:

 当任务 A 被进程 B 调用时提取任务 A 的平均时间

 当条件 XYZ 同时出现时提取任务 A 的平均时间

 计算任务 A 运行时的标准差

除了提供关于系统活动的详细信息之外,跟踪程序允许检测应

用程序并将它们的跟踪事件收集到系统事件中。跟踪文件随即包含

了一条具有正确的序列和精确的时间戳的应用程序和系统活动的完

整记录。

2. 实现

一个跟踪 hook 是一个将被监视的特定事件。一个唯一的数字

被指定给那个事件,这个唯一的数字被称作一个 hook ID。trace

命令监视这些 hook。

trace 命令生成关于用户进程和内核子系统的统计信息。这些

二进制信息被写入内存中的两个备用缓冲中。trace 进程然后将信

息传送到磁盘上的日志文件中。这个文件快速增长。 trace 程序以


进程方式运行,它可以通过 ps 命令监视。 trace 命令以守护程序

形式运行,类似于记帐程序。

以下内容说明了跟踪程序的实现过程。

跟踪程序的实现。这些叙述说明了跟踪过程。在这一过程中,

用户进程(内核子系统)向具有标记 A 和 B 的跟踪缓冲发送 hook

调用。它们从缓冲向用户内核跟踪日志文件传送跟踪驱动。

使用系统资源监视程序。理想情况下,开销应当足够小以不明

显影响系统运行。当 trace 程序活动时,CPU 开销要小于百分之二。

当跟踪数据充满缓冲区需要写到日志中时,需要为文件 I/O 附加

CPU 开销。通常这一开销小于百分之五。因为 trace 程序需要占用

缓冲空间,因此如果环境中内存有限时,这就变得比较重要。要注

意跟踪日志和报告文件可能变得很大。必要时要限制跟踪数据收集

量,跟踪程序生成大量数据。这些数据在存储设备上溢以后不可能

捕捉到。

有两种有效使用跟踪程序的方法:

跟踪程序可以通过多种方式来打开和关闭以捕捉系统活动。实

用的方式就是为后续处理捕捉系统活动几秒到几分。这段时间足够
用来获得主要应用程序处理过程或一项长时间任务感兴趣部分的特

征。

跟踪程序可以配置成将时间流定向为标准输出。这允许一个实

时进程连接到事件流并当事件被记录时提供数据整理,然后创建长

期监视能力。一个专门监测的逻辑扩展就是将数据流定向到可以存

储大量数据或提供动态数据整理的辅助设备。这种技术被性能工具

tprof,pprof,netpmon,以及 filemon 使用。

综上所述,当使用 trace 时,一般来说会使用 2%~5%的系统资源,

需要注意的是,这种资源占用是系统资源充足并且系统运行较为正

常时。下面对一些 trace 可能会影响系统正常运行,并且造成系统

性能严重下降的场景,在这些场景下 trace 对业务的影响是不可控

的。

a. CPU 资源不足。系统繁忙,打开 trace 可能会造成系统 hang,系统

响应慢,甚至造成系统 crash 的情况。

b. 内存资源不足。打开 trace 可能会造成系统 hang,系统响应慢,

甚至造成系统 crash 的情况。

c. trace 日志所使用的磁盘 io 忙。依然使用此磁盘保存日志,可能

会造成系统 hang,系统响应慢,甚至造成系统 crash 的情况。

d. 系统存在死锁或其它未知 bug,如 trace 本身的 bug,这时对系统

的影响是不可控的。

You might also like