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 将显示使用信息。
支持以下选项:
将命令应用于 Oracle Solaris 内核陷阱跟踪。
在 sun4v 平台上对虚拟机管理程序陷阱跟踪应用此命令。
–K 和 –H 选项不能在一个命令中使用。
为系统中的所有 CPU 设置跟踪缓冲区大小 bufsz。缓冲区大小 bufsz 可以包括后缀 k 或 m。缺省情况下,bufsz 为 2 * PAGESIZE。如果已分配所需大小的缓冲区,则还会对陷阱跟踪进行重新配置,从而用新缓冲区替换旧缓冲区。HV 跟踪缓冲区的上限大小为 16M。对于内核陷阱跟踪,sun4v 上的缓冲区上限为 16M,但 OPL 上的上限为 4M。
但是,如果由于内存不足而无法分配所需的缓冲区,ttrace 将继续使用先前分配的缓冲区。因此,特定 CPU 上的实际 bufsz 可能与全局 bufsz 不同。
重新配置陷阱跟踪的开销很大,因此不建议在生产计算机上过于频繁地使用此选项。
列出应用相应操作的 CPU。可以接受此选项的子命令为 enable、disable 和 dump。
设置转储跟踪记录时的输出文件。如果省略此选项,则缺省输出为 stdout。
按时间戳顺序遍历所有 CPU 上的跟踪记录。如果省略此选项,则会首先按 CPU 遍历跟踪记录。
指定启用跟踪时内核陷阱跟踪的详细级别。该级别是 1 到 7 之间的数字。缺省级别为 7。
支持以下子命令:
对一系列 CPU 启用陷阱跟踪。如果未通过 –p 选项指定 CPU,则会对所有 CPU 启用跟踪。
对一系列 CPU 禁用陷阱跟踪。如果未通过 –p 选项指定 CPU,则会对所有 CPU 禁用跟踪。
暂停对所有 CPU 的陷阱跟踪。禁用了跟踪的 CPU 可能会被暂停。恢复后仍将处于禁用状态。子命令 suspend 和 resume 比子命令 disable 和 enable 生成的系统开销小。如果要临时停止对所有 CPU 的跟踪,应使用 suspend 和 resume 子命令。
将对所有 CPU 的跟踪恢复到 suspend 之前的状态。suspend 和 resume 子命令对所有 CPU 进行操作。
如果未指定任何选项,则会显示所有 CPU 的陷阱跟踪状态。如果指定了 –b bufsz 选项,则跟踪缓冲区大小将设置为指定的 bufsz,并会重新配置陷阱跟踪。
转储跟踪记录。如果未指定任何选项,则会在终端上显示所有跟踪记录。如果提供了输出文件和 CPU 列表,则只有这些 CPU 上的跟踪才会转储到指定的输出文件。
输出格式可能会在将来有所更改。
CPU 支持以下陷阱跟踪状态。
已分配跟踪缓冲区,因此,跟踪已就绪,可供启用。
已分配并配置跟踪缓冲区,但尚未启用。因此,跟踪已就绪,可供启用。
已启用陷阱跟踪,因此,跟踪缓冲区中的内容将使用 CPU 上的陷阱活动进行更新。
已禁用跟踪陷阱。因此,不会更新跟踪缓冲区中的内容,直到重新启用为止。"Disabled"(已禁用)和 "Enabled"(已启用)状态之间发生的陷阱活动不会反映在跟踪缓冲区中。
已在所有 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 可能会被暂停。恢复跟踪时,它们会恢复至暂停前的状态。suspend 和 resume 子命令要比 disable 和 enable 子命令更为高效。
# 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):
|