Go to main content

手册页部分 8:系统管理命令

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

ttrace(8)

名称

ttrace - 管理来自虚拟机管理程序层的陷阱跟踪

用法概要

ttrace config 
ttrace config  -K 
ttrace config  -K [-b bufsz [k | m] ] 
ttrace enable  -K [-v verbose] 
ttrace enable  -K [-v verbose] [-p processor_id ...] 
ttrace disable -K 
ttrace disable -K [-p processor_id ...] 
ttrace suspend -K 
ttrace resume  -K 
ttrace dump    -K 
ttrace dump    -K [-t] [-o output] [-p processor_id ...]
ttrace config  -H 
ttrace config  -H [-b bufsz [k | m] ] 
ttrace enable  -H 
ttrace enable  -H [-p processor_id ...] 
ttrace disable -H 
ttrace disable -H [-p processor_id ...] 
ttrace suspend -H 
ttrace resume  -H 
ttrace dump    -H 
ttrace dump    -H [-t] [-o output] [-p processor_id ...]

描述

ttrace 实用程序用于管理虚拟机管理程序和内核级别的陷阱跟踪。特权用户可以按需动态启用和禁用跟踪,并根据需要对跟踪进行配置。

不带参数的 ttrace 将显示使用信息。

选项

支持以下选项:

–K

将命令应用于 Oracle Solaris 内核陷阱跟踪。

–H

在 sun4v 平台上对虚拟机管理程序陷阱跟踪应用此命令。

–K–H 选项不能在一个命令中使用。

–b bufsz [k | m]

为系统中的所有 CPU 设置跟踪缓冲区大小 bufsz。缓冲区大小 bufsz 可以包括后缀 km。缺省情况下,bufsz2 * PAGESIZE。如果已分配所需大小的缓冲区,则还会对陷阱跟踪进行重新配置,从而用新缓冲区替换旧缓冲区。HV 跟踪缓冲区的上限大小为 16M。对于内核陷阱跟踪,sun4v 上的缓冲区上限为 16M,但 OPL 上的上限为 4M。

但是,如果由于内存不足而无法分配所需的缓冲区,ttrace 将继续使用先前分配的缓冲区。因此,特定 CPU 上的实际 bufsz 可能与全局 bufsz 不同。

重新配置陷阱跟踪的开销很大,因此不建议在生产计算机上过于频繁地使用此选项。

–p processor_id processor_id...

列出应用相应操作的 CPU。可以接受此选项的子命令为 enabledisabledump

–o output

设置转储跟踪记录时的输出文件。如果省略此选项,则缺省输出为 stdout

–t

按时间戳顺序遍历所有 CPU 上的跟踪记录。如果省略此选项,则会首先按 CPU 遍历跟踪记录。

–v

指定启用跟踪时内核陷阱跟踪的详细级别。该级别是 1 到 7 之间的数字。缺省级别为 7。

子命令

支持以下子命令:

enable

对一系列 CPU 启用陷阱跟踪。如果未通过 –p 选项指定 CPU,则会对所有 CPU 启用跟踪。

disable

对一系列 CPU 禁用陷阱跟踪。如果未通过 –p 选项指定 CPU,则会对所有 CPU 禁用跟踪。

suspend

暂停对所有 CPU 的陷阱跟踪。禁用了跟踪的 CPU 可能会被暂停。恢复后仍将处于禁用状态。子命令 suspendresume 比子命令 disableenable 生成的系统开销小。如果要临时停止对所有 CPU 的跟踪,应使用 suspendresume 子命令。

resume

将对所有 CPU 的跟踪恢复到 suspend 之前的状态。suspendresume 子命令对所有 CPU 进行操作。

config

如果未指定任何选项,则会显示所有 CPU 的陷阱跟踪状态。如果指定了 –b bufsz 选项,则跟踪缓冲区大小将设置为指定的 bufsz,并会重新配置陷阱跟踪。

dump

转储跟踪记录。如果未指定任何选项,则会在终端上显示所有跟踪记录。如果提供了输出文件和 CPU 列表,则只有这些 CPU 上的跟踪才会转储到指定的输出文件。

输出格式可能会在将来有所更改。

陷阱跟踪状态

CPU 支持以下陷阱跟踪状态。

Ready(就绪)

已分配跟踪缓冲区,因此,跟踪已就绪,可供启用。

Config(配置)

已分配并配置跟踪缓冲区,但尚未启用。因此,跟踪已就绪,可供启用。

Enabled(已启用)

已启用陷阱跟踪,因此,跟踪缓冲区中的内容将使用 CPU 上的陷阱活动进行更新。

Disabled(已禁用)

已禁用跟踪陷阱。因此,不会更新跟踪缓冲区中的内容,直到重新启用为止。"Disabled"(已禁用)和 "Enabled"(已启用)状态之间发生的陷阱活动不会反映在跟踪缓冲区中。

Suspended(已暂停)

已在所有 CPU 上暂停跟踪。

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

示例

示例 1 显示每个 CPU 上的当前陷阱跟踪状态及其缓冲区大小

以下示例显示了不带参数的 config 子命令如何显示每个 CPU 的当前内核和虚拟机管理程序陷阱跟踪状态和缓冲区大小。如果指定了 –K–H 选项,则只会显示对应对象的状态。

# ttrace config -K 
Kernel trap trace status : 
CPU     Trace-Status      buffer             size           verbose 
0       Enabled           0x10046410         16320          7 
1       Enabled           0x410b4000         16320          7 
2       Enabled           0x410bc000         16320          1 
3       Enabled           0x410c4000         16320          1

# ttrace config -H
HV trap trace status :
CPU     Trace-Status      buffer             size
0       Ready             0x22e70000         32768
1       Ready             0x22950000         32768
2       Ready             0x22958000         32768
3       Ready             0x22960000         32768
示例 2 设置跟踪缓冲区大小

以下示例显示了如何通过使用带 –b <bufsz> 选项的 config 子命令来设置跟踪缓冲区大小,进而重新配置跟踪:

# ttrace config -K -b 128k 
kernel ttrace buffer size has been set to 131072 

# ttrace config -K 
kernel trap trace status : 
CPU     Trace-Status      buffer             size           verbose 
0       Ready             0x3e680000         131072         - 
1       Ready             0x3e6a0000         131072         - 
2       Ready             0x3e6c0000         131072         - 
3       Ready             0x3e6e0000         131072         - 
  
# ttrace config -H -b 64k 
HV ttrace buffer size has been set to 65536 
  
# ttrace config -H 
HV trap trace status : 
CPU     Trace-Status      buffer             size 
0       Suspended         0x22e70000         65536 
1       Suspended         0x22950000         65536 
2       Suspended         0x22958000         65536 
3       Suspended         0x22960000         65536 
示例 3 对所有 CPU 启用跟踪

以下示例说明了如何使用 enable 子命令对所有 CPU 启用跟踪:

# ttrace enable -K 
# ttrace config -K 
kernel trap trace status : 
CPU     Trace-Status      buffer             size           verbose 
0       Enabled           0x3e680000         131072         7 
1       Enabled           0x3e6a0000         131072         7 
2       Enabled           0x3e6c0000         131072         7 
3       Enabled           0x3e6e0000         131072         7

# ttrace enable -H
# ttrace config -H
CPU     Trace-Status      buffer             size 
0       Enabled           0x22d30000         65536
1       Enabled           0x22d40000         65536
2       Enabled           0x22e70000         65536
3       Enabled           0x22950000         65536

如果使用子命令 enable 以及选项 –p,并提供一个 CPU 列表,则只有在这些 CPU 当前处于禁用状态时,才会对这些 CPU 启用跟踪。

示例 4 对所有 CPU 禁用跟踪

以下示例说明了如何使用不带 –p 选项的 disable 子命令对所有 CPU 禁用跟踪。如果提供了 –p 选项,则仅会对列出的 CPU 禁用跟踪。

# ttrace disable -K -p 0 1 
# ttrace config -K 
kernel trap trace status : 
CPU     Trace-Status      buffer             size           verbose 
0       Disabled          0x3e680000         131072         - 
1       Disabled          0x3e6a0000         131072         - 
2       Enabled           0x3e6c0000         131072         7 
3       Enabled           0x3e6e0000         131072         7

# ttrace disable -H -p 2 3
# ttrace config -H
CPU     Trace-Status       buffer             size 
0       Enabled            0x22d30000         65536
1       Enabled            0x22d40000         65536
2       Disabled           0x22e70000         65536
3       Disabled           0x22950000         65536

示例 5 暂停和恢复所有 CPU 上的陷阱跟踪

以下示例说明了如何暂停和恢复所有 CPU 上的陷阱跟踪。suspend 子命令会暂停所有 CPU 上的陷阱跟踪。禁用了跟踪的 CPU 可能会被暂停。恢复跟踪时,它们会恢复至暂停前的状态。suspendresume 子命令要比 disableenable 子命令更为高效。

# ttrace suspend -K 
# ttrace suspend -H 
  
# ttrace resume -K 
# ttrace resume -H
示例 6 显示跟踪记录

以下示例说明了如何显示跟踪记录。如果未指定参数,则会在终端上显示所有跟踪记录。如果提供了 –o 选项,并提供了输出文件,则记录将保存到该输出文件中。如果提供了 –p 选项,并提供了 CPU 列表,则仅会保存这些 CPU 的记录。

# ttrace dump -K -o ktrace.out -p 0 1 
# ttrace dump -H -o htrace.out -p 2 3

如果提供了 –t 选项,则会按时间戳顺序保存 CPU 的跟踪记录,而不是逐个 CPU 进行保存:

# ttrace dump -K -t -o kalltrace.out 
# ttrace dump -H -t -o halltrace.out

检索跟踪数据的另一种方式是使用 mdb(1)。

<cpuid>::ttrace 
<cpuid>::httrace

属性

有关下列属性的说明,请参见 attributes(7)

属性类型
属性值
可用性
system/kernel/ttrace
接口稳定性
Committed(已确定)

另请参见

attributes(7)