AIX命令参考大全,卷 5,s - u - trace 守护进程

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 5,s - u

trace 守护进程

用途

记录选定的系统事件。

语法

Trace -a  -g ] ] [  -f  -l ] [ -b |  -B] [ -c] [ -C [ CPUList | all ]] [  -d ] [  -h ] [ -j Event 、Event ] ] [ -k Event Event ] ] [ -J Event-group [,Event-grou ]] [ -K Event-grou [,Event-grou ]] [  -m Message ]  [  -n ] [  -o Name ] [  -o- ] [  -p ] [  -s ] [  -L Size ] [  -T Size ]

描述

trace 守护进程配置一个跟踪会话,并启动系统事件的收集。跟踪功能所收集的数据记录在跟踪日志中。跟踪日志的报告可以用 trcrpt 命令生成。

当用 -a 标志调用时,trace 守护进程就异步运行(即作为一个后台任务)。否则,它就会交互式地运行,并提示您输入子命令

可以使用系统管理接口工具(SMIT)来运行 trace 守护进程。要使用 SMIT,请输入:

smit trace

共有以下三种跟踪数据收集的方式:

备用(缺省值) 所有的跟踪事件都在跟踪日志文件中捕获。
循环 ( -l) 跟踪事件包括在内存缓冲区中,不在跟踪日志文件中捕获,直到跟踪数据收集工作停止为止。
单一 ( -f) 当内存跟踪缓冲区已满,且缓冲区中的内容已捕获在跟踪日志文件中时,跟踪事件的收集工作就结束。
缓冲区分配 跟踪缓冲区可以从内核堆分配,或放入独立的段中。缺省情况下,除非请求的缓冲区大小很大以致不能装入内核堆(这种情况下,则在独立的段中分配缓冲区),否则缓冲区一律都从内核堆中分配。从独立的段分配缓冲区,多少有点妨碍跟踪性能。但是,独立段中的缓冲区不会占用调页空间,只占一点锁定内存。缓冲区分配的类型可以用可选的 -b-B 标志来指定。

标志

-a 异步运行 trace 守护进程(即作为一个后台任务)。一旦以此种方式启动 trace,则可以使用 trcontrcofftrcstop 命令来分别启动跟踪、停止跟踪或退出跟踪会话。这些命令可以作为链接到 trace 的链路来实现。
-b 从内核堆分配缓冲区。如果不能从内核堆获取所请求的缓冲区空间,则命令失败。
注:
-b 标志只对 32 位内核有效。
-B 在独立段中分配缓冲区。
注:
-B 标志只对 32 位内核有效。
-c 保存跟踪日志文件,添加 .old 到其文件名。
-C [ CPUList | all ] 使用一个缓冲区集合跟踪 CPUList 中的每个 CPU。多个 CPU 可以用逗号隔开,或包含在双引号中然后用逗号或空格隔开。要跟踪所有 CPU,请指定 all。因为该标志对每个 CPU 使用了一个缓冲区集合并为每个 CPU 生成一个文件,所以它可能消耗大量内存和文件空间,因此应该小心使用。产生的文件名为 trcfiletrcfile-0trcfile-1 等,其中 01 等是 CPU 编号。如果指定了 -T-L,则大小适用于每一个缓冲区集合和每一个文件。对于单处理机系统,可以指定 -C all,但是带有 CPU 编号列表的 -C 将被忽略。如果 -C 用于指定多个 CPU,如 -Call-C "0 1",则相关的缓冲区不放入系统转储中。
注意: 只有 root 用户才能使用 -C 标志。
-d 禁用自动启动跟踪数据收集。延时启动跟踪数据收集。正常情况下,每当开始 trace 守护进程时,就会自动启动跟踪数据收集。使用 trcon 命令来启动跟踪数据收集。
-f 以单一方式运行 trace。当内存缓冲区已满时,立即停止跟踪数据收集。然后将跟踪数据写入跟踪日志。使用 trcon 命令来重新启动跟踪数据收集,并捕获另一个已满的数据缓冲区。如果在缓冲区满之前发出 trcoff 子命令,就停止跟踪数据收集并将缓冲区当前内容写入跟踪日志。
-g 在一般跟踪通道(通道 1 至 7)中启动跟踪会话。该标志仅当 trace 异步运行(-a)时才有效。命令的返回码就是通道编号;通道编号随后必须用于一般跟踪子例程调用。要停止一般跟踪会话,可使用命令 trcstop -<channel_number>。
-h 省略跟踪日志的头记录。正常情况下,trace 守护进程在跟踪日志开始部位写头记录:日期和时间(通过 date 命令)、系统名称、版本和发行版、节点标识、机器标识(通过 uname -a 命令)以及用户定义的消息。在跟踪日志开始部位,头记录的信息包括在 trcrpt 命令的输出中。
-j Event[Event]  
-k Event[,Event] 指定您想要收集(-j)或排除(-k)其跟踪数据的用户定义事件。Event 列表项可以用逗号隔开,或包含在双引号中并用逗号或空格隔开。

注:以下事件用于确定 trcrpt 报告中的 pid、cpuid 和 exec 路径名称:

106 分派
10C 分派空闲进程
134 EXEC 系统调用
139 FORK 系统调用
465 KTHREAD 创建

如果这些事件中有任一事件丢失,则 trcrpt 命令所报告的信息就不完整。因此:当使用 -j 标志时,应该包括 Event 列表中的所有这些事件;相反,当使用 -k 标志时,则不应该包括 Event 列表中的这些事件。如果用 SMIT 或 -J 标志启动跟踪,则这些事件就在 tidhk 组中。

-J Event-group [, Event-group ]  
-K Event-group [ ,Event-group] 指定要被包含(-J)或排除(-K)的事件组。事件组在“调试和性能跟踪”中描述。-J-K 标志除了有事件组而不是个别 hook 标识以外,其它方面均同 -j-k 作用相似。可以指定所有四个标志 -j-J-k-K
-l 以循环方式运行 trace。在停止跟踪数据收集时,trace 守护进程将跟踪数据写入跟踪日志中。仅捕获跟踪数据的最后一个缓冲区。使用 trcoff 命令来停止跟踪数据收集时,应该使用 trcon 命令来重新启动它。
-L Size 用所规定的值来重设缺省跟踪日志文件 1 MB的大小。将文件大小指定为 0,便将跟踪日志文件大小设置为缺省值。

注:在循环方式和备用方式中,跟踪日志文件大小必须至少是跟踪缓冲区大小的两倍。在单一方式中,跟踪日志文件必须至少是缓冲区的大小。有关控制跟踪缓冲区大小的信息,请参阅 -T 标志。
-m Message 指定将要包括在跟踪日志的消息字段头记录中的文本。
-n 将这些信息添加到跟踪日志头:锁定信息、硬件信息以及对于每一个装入程序项的符号名称、地址和类型。
-o Name 重设 /var/adm/ras/trcfile 缺省跟踪日志文件并将跟踪数据写入用户定义的文件。
-o - 重设缺省跟踪日志名称,并将跟踪数据写入标准输出。当使用此标志时, -c 标志被忽略。如果指定 -o--C,则会产生一个错误。
-p 每一个 hook 都包含当前处理器的 cpuid。该标志仅对 64 位内核跟踪有效。

注:trcrpt 命令会向 cpuid 报告是否指定了该选项。
-s 当填写跟踪日志时,停止跟踪。当跟踪日志填满后,通常trace 守护进程都回绕跟踪日志,并继续收集跟踪数据。在异步操作过程中,该标志可以使 trace 守护进程停止跟踪数据收集。(在交互式操作中,必须用 quit 子命令来停止跟踪。)
-T Size

用所规定的值重设缺省跟踪缓冲区 128 KB 的大小。必须以 root 用户来请求 1 MB 以上的缓冲区空间。最大可能的大小为 268435184 字节,除非使用 -f 标志(此时大小为 536870368 字节)。最小可能的大小为 8192 字节,除非使用 -f 标志(此时大小为 16392 字节)。当使用 -f 标志时,8192 和 16392 之间的大小都可使用;但是实际使用的大小为 16392 字节。

注:在循环方式和备用方式中,跟踪缓冲区的大小必须是跟踪日志文件大小的一半,或小于跟踪日志文件大小。在单一方式中,跟踪日志文件必须至少是缓冲区的大小。有关控制跟踪日志文件大小的信息,请参阅 -L 标志。另外也请注意,跟踪缓冲区使用锁定内存,这意味着它们不可页面调度。因此,跟踪缓冲区越大,就有越少的物理内存适用于应用程序。

除非指定 -b-B 标志,否则系统都会试图从内核堆分配缓冲区空间。如果该请求不能得到满足,则系统会试图将缓冲区作为独立段来分配。

-f 标志实际上使用了两个缓冲区,它们一起作为单个缓冲区来运行(除了当第一个缓冲区满时,将记录一个缓冲区回绕跟踪 hook 这种情况以外)。

子命令

当以交互方式运行时,跟踪会识别以下一些子命令:

trcon 启动跟踪数据收集。
trcoff 停止跟踪数据收集。
qquit 停止跟踪数据收集并退出 trace
! Command 运行由 Command 参数指定的 shell 命令。
? 显示 trace 子命令摘要。

信号

INTERRUPT 信号充当启动和停止跟踪数据收集的开关。中断被设置为 SIG_IGN 用于被跟踪的进程。

示例

  1. 若要以交互方式使用跟踪,请输入 trace(此时将显示 > 提示符),然后指定所需的子命令。例如,要在运行 anycmd 命令期间跟踪系统事件,请输入:

    trace
    > !anycmd
    > q
  2. 要避免在命令完成时发生延时,可以只使用一个命令行异步启动跟踪( -a)。输入:

    trace -a; anycmd; trcstop
  3. 要跟踪系统本身 10 秒左右,请输入:

    trace -a; sleep 10; trcstop
  4. 要输出跟踪数据到特定的跟踪日志文件(而不是 /var/adm/ras/trcfile 缺省跟踪日志文件),请输入:

    trace -a -o /tmp/my_trace_log; anycmd; trcstop
  5. 要捕获 cp 命令的执行,从收集进程排除特殊事件,请输入:

    trace -a -k 『20e,20f』; cp /bin/track /tmp/junk; trcstop

    在上例中, -k 选项抑制从 locklunlockl 函数收集事件(20e 和 20f 事件)。

  6. 要跟踪 hook 234 以及能使用户可以看到进程名称的 hook,请使用:

    trace -a -j 234 -J tidhk
    这可以跟踪事件组“tidhk”中的 hook 和 hook 234。
  7. 要使跟踪对每个 CPU 使用一个缓冲区集合,请指定:

    trace -aC all

    产生的文件为 /var/adm/ras/trcfile/var/adm/ras/trcfile-0/var/adm/ras/trcfile-1 等等,直至 /var/adm/ras/trcfile-(n-1),其中 n 为系统中 CPU 的数目。

    注:
    trace -aCall -o mylog 产生文件 mylog-0、mylog-1、...

文件

/usr/include/sys/trcmacros.h 定义 trchookutrchook 宏。
/var/adm/ras/trcfile 包括缺省跟踪日志文件。

相关信息

trcevgrp 命令、trcnm 命令、trcrpt 命令、trcstop 命令。

trchook 子例程、trcgen 子例程、trcstart 子例程、trcon 子例程、trcoff 子例程、trcstop 子例程。

trcgenk 内核服务。

AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Trace Facility Overview

《AIX 5L V5.2 性能管理指南》中的『用跟踪工具进行性能分析』

AIX 5L Version 5.2 Kernel Extensions and Device Support Programming Concepts 中的 Debug and Performance Tracing。

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]