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

退出打印视图

更新时间: 2014 年 7 月
 
 

trapstat(1M)

名称

trapstat - 报告陷阱统计信息

用法概要

/usr/sbin/trapstat [-t | -T | -e entry] 
     [-C processor_set_id | -c cpulist] [-P] [-a]
     [-A cor|soc|bins [-m]] [-k keys] [-o num]
     [-r rate | [interval [count]] | command [args]...]
/usr/sbin/trapstat -O statfile [-t | -T | -e entry]
             [-C processor_set_id | -c cpulist] [-a]
             [-r rate | [interval [count]] | command [args]...]
/usr/sbin/trapstat -I statfile
             [-A cor|soc|bins [-m]] [-k keys] [-o num]
/usr/sbin/trapstat -l [-P] [-t | -T]

描述

trapstat 实用程序可在基于 UltraSPARC 的系统上收集并显示运行时陷阱统计信息。缺省输出是包含陷阱类型和 CPU ID 的表,表的每行指示陷阱类型,表的每列指示 CPU。如果标准输出是一个终端,该表可包含该终端宽度可以容纳的任意多列数据;如果标准输出不是终端,该表最多可包含六列数据。缺省情况下,会针对所有 CPU 收集并显示数据;如果单个表容纳不下数据,则会在多个表中输出这些数据。可以通过 –c–C 可选选项指定要收集并显示其数据的 CPU 集。

除非指定了 –r 选项或 –a 选项或 command 参数,否则表中每个条目显示的值对应于每秒的陷阱数。如果指定 –r 选项,该值将对应于指定抽样率隐含的时间间隔内的陷阱数;如果指定 –a 选项,该值将对应于自调用 trapstat 以来累计的陷阱数。如果指定了 command 参数,则该值对应于在命令的生命周期内累计的陷阱数。

缺省情况下,trapstat 每秒显示一次数据并且无限期运行;可以使用 –r 选项或 intervalcount 参数控制此行为。–r 选项参数指定每秒进行抽样并显示数据的次数。以秒为单位指定 intervalcount 表示在退出之前要执行的统计次数。另外,可以指定 command,在这种情况下 trapstat 执行所提供的命令并继续运行至该命令退出,然后显示累计数据。系统假定 interval 为正整数;如果所需的 command 无法与整数区分开,则必须指定 command 的完整路径。只能使用 –rintervalcommand 中的一个。

UltraSPARC 系统可以通过操作系统陷阱来处理转换后备缓冲器 (translation lookaside buffer, TLB) 未命中。对于某些工作负荷,TLB 未命中陷阱会是影响系统整体性能的一个重要部分;–t 选项可提供有关这些陷阱的详细信息。使用此选项运行时,trapstat 将显示 TLB 未命中陷阱的比率以及处理这些陷阱所用时间的百分比。此外,还将区分命中转换存储缓冲区 (translation storage buffer, TSB) 的 TLB 未命中事件和在 TSB 中也未命中的 TLB 未命中事件。(TSB 是一种用作转换条目高速缓存的软件结构,用于快速填充 TLB;《UltraSPARC II User's Manual》中对其进行了详细讨论。)TLB 和 TSB 未命中信息将进一步分为用户模式未命中和内核模式未命中。

工作集超出 TLB 范围的工作负荷可能会因 TLB 未命中而花费大量时间。为了适应这些工作负荷,操作系统支持多个页面大小:大页面可提高有效 TLB 范围,从而减少 TLB 未命中次数。为了帮助用户深入了解页面大小与 TLB 未命中率之间的关系,trapstat 提供了 –T 选项,通过该可选选项,可以按页面大小进一步细分 TLB 未命中信息。–T 选项提供的信息是 –t 选项所提供信息的超集;只能指定 –t–T 中的一个。

选项

支持以下选项:

–a

按单调递增的累计值而不是每秒或每间隔比率形式显示陷阱数。

–A cor

按核心 ID 聚合输出。具有相同核心 ID 的数据行将聚合到一个行中。缺省情况下,列将替换为小计。而 –m 选项将输出列平均值。

–A soc

按套接字 ID 聚合输出。具有相同套接字 ID 的数据行聚合为一行。缺省情况下,列将替换为小计。而 –m 选项将输出列平均值。

–A bins

将每个抽样期间内的列聚合到数量较少的容器 (bin) 中,按其出现顺序对其分组。要计算算术平均值而不是小计,可以使用 –m 选项。在执行 bin 聚合步骤之前,可以使用 –k 排序选项来更改列顺序。

按 ID (–A cor|soc) 进行的聚合在排序 (–k) 之前处理。然后按 bin (–A bins) 进行分组。最后,每个间隔输出的输出行的数量可能会受 –o 限制。

–c cpulist

仅对 cpulist 指定的 CPU 执行 trapstat

cpulist 可以是单个处理器 ID(例如 4)、处理器 ID 范围(例如 4-6),也可以是以逗号分隔的处理器 ID 或处理器 ID 范围列表(例如 4,5,64,6-8)。

–C processor_set_id

仅对 processor_set_id 指定的处理器集中的 CPU 执行 trapstat

trapstat 会修改其输出,以始终反映指定处理器集中的 CPU。如果向该处理器集中添加了一个 CPU,trapstat 会修改其输出以包括该添加的 CPU;如果从该处理器集中删除了一个 CPU,trapstat 会修改其输出以排除该删除的 CPU。最多可指定一个处理器集。

–e entrylist

仅对 entrylist 指定的陷阱表条目执行 trapstat。陷阱表条目可以通过陷阱编号或陷阱名称指定(例如,级别为 10 的陷阱可以指定为 740x4A0x4alevel-10)。

entrylist 可以是单个陷阱表条目或以逗号分隔的陷阱表条目列表。如果指定的陷阱表条目无效,trapstat 将输出一个表,其中包含所有有效陷阱表条目的名称和值。也可以在《The SPARC Architecture Manual, Version 9》和《Sun Microelectronics UltraSPARC II User's Manual》 中找到有效的陷阱表条目列表。如果除了 –e 选项外还指定了可解析选项 (–P),则数据的格式将如 –P 选项的描述中指定的那样:

–I statfile

重放之前保存在 statfile 中的数据。通过指定 –O 来创建用于重放的数据文件。该选项尤其适用于分析具有大量 CPU 的计算机的统计信息。可以使用不同的排序和聚合选项对文件进行多次重新处理。

为帮助解释数据,将在输出的顶部显示用来收集数据的原始命令,除非指定了 –P

–I 选项与 –O–T–t–e–c–C–a–r 选项不兼容。如果使用该选项,则不能指定 intervalcount 或 command 参数。

–k key1,...

每个抽样期间内的行依次按照 key1key2 等从高到低排序。每个键可以是 trapstat 输出中的任何行标题,例如 level-10u-itlb-miss 等。

使用 trapstat –l 可以列出所有事件名称。使用 –lt–lT 可以列出 TLB 格式的键名称。将 –l–P 一起使用可显示可解析的列表。

–l

列出陷阱表条目。缺省情况下,所显示的表包含所有有效的陷阱编号、陷阱名称以及简要说明。使用缺省输出和使用 –e 选项的 entrylist 参数时都会显示陷阱名称。如果除了 –l 选项外还指定了可解析选项 (–P),则数据的格式如下:

字段
内容
1
以十六进制表示的陷阱编号
2
以十进制表示的陷阱编号
3
陷阱名称
其余
陷阱说明

前三个字段以空格分隔。最后一个字段可以包含空格。如果修改格式,则它将与现有字段兼容。

有关 –l 的其他用法,请参见 –k–t–T 选项。

–m

当使用 –A 选项来聚合多个 CPU 的数据时,将显示算术平均值而不是总和。

–o num

在应用排序和聚合选项后,仅显示每个抽样期间内的前 num 行。

–O statfile

将收集的数据保存到 statfile 中。以后可以使用 –I 重放该数据。

如果文件名为 (连字符),则将写入到标准输出。

–O 的用途是捕获所有指定的数据。它与以下数据缩减选项不兼容:–A–k–m–o。由于 statfile 格式是固定的,因此,–P 选项不能与 –O 一起使用。

–P

生成可解析的输出。在不使用其他数据收集修改选项(即 –t–T)运行时或使用 –e 运行时,trapstat 的可解析输出具有以下格式:

字段
内容
1
时间戳(自启动以来的纳秒数)
2
CPU/核心/插槽/bin ID
3
陷阱编号(以十六进制表示)
4
陷阱名称
5
每间隔的陷阱比率

各个字段使用空格分隔。如果修改格式,将通过从字段 6 开始添加可能的新字段来进行修改;现有字段将保持不变。

–r rate

将抽样率显式设置为每秒 rate 个样例。如果指定该选项,trapstat 的输出将由每秒的陷阱数更改为每抽样间隔的陷阱数。不能与 command 或 interval 参数一起使用。

–t

启用 TLB/TSB 统计信息。

所显示的表包含四个主要数据列:itlb-missitsb-missdtlb-missdtsb-miss。这些列包含对应事件的比率和处理事件所用 CPU 时间的百分比。表中的行对应于 CPU(或核心、插槽或 bin,如果指定了 –A),每个 CPU 占用两行:一行用于用户模式事件(以 u 表示),一行用于内核模式事件(以 k 表示)。对于每一行,在最右侧的列中显示汇总的CPU 时间百分比。使用实线表示 CPU。如果除了 –t 选项外还指定了可解析选项 (–P),则数据的格式如下:

字段
内容
1
时间戳(自启动以来的纳秒数)
2
CPU/核心/插槽/bin ID
3
模式(k 表示内核,u 表示用户)。
4
I-TLB 未命中
5
I-TLB 未命中处理程序所用时间的百分比
6
I-TSB 未命中
7
I-TSB 未命中处理程序所用时间的百分比
8
D-TLB 未命中
9
D-TLB 未命中处理程序所用时间的百分比
10
D-TSB 未命中
11
D-TSB 未命中处理程序所用时间的百分比

各个字段使用空格分隔。如果修改格式,将通过从字段 12 开始添加可能的新字段来进行修改;现有字段将保持不变。

–T

启用 TLB/TSB 统计信息,其中包含页面大小信息。与 –t 选项一样,所显示的表包含四个主要数据列:itlb-missitsb-missdtlb-missdtsb-miss。这些列包含对应事件的绝对数量以及处理该事件所用 CPU 时间的百分比。表中的行对应于 CPU(或核心、插槽或 bin,如果指定了 –A),每个 CPU 占用两个行集:一个行集用于用户级事件(以 u 表示),一个行集用于内核级事件(以 k 表示)。每个行集包含的行数与所支持的页面大小相对应(请参见 getpagesizes(3C))。对于每一行,在最右侧的列中显示汇总的CPU 时间百分比。使用虚线表示两个行集;使用实线表示 CPU。如果除了 –T 选项外还指定了可解析选项 (–P),则数据的格式如下:

字段
内容
1
时间戳(自启动以来的纳秒数)
2
CPU/核心/插槽/bin ID
3
模式(k 表示内核,u 表示用户)
4
页面大小(以十进制表示)
5
I-TLB 未命中
6
I-TLB 未命中处理程序所用时间的百分比
7
I-TSB 未命中
8
I-TSB 未命中处理程序所用时间的百分比
9
D-TLB 未命中
10
D-TLB 未命中处理程序所用时间的百分比
11
D-TSB 未命中
12
D-TSB 未命中处理程序所用时间的百分比

各个字段使用空格分隔。如果修改格式,将通过从字段 13 开始添加可能的新字段来进行修改;现有字段将保持不变。

示例

示例 1 运行不带选项的 trapstat

在不带选项的情况下运行时,trapstat 会显示一个包含陷阱类型和 CPU 的表。缺省终端宽度最多可以容纳六列;如果有六个以上的 CPU(如本例),将显示多个表:


example# trapstat
vct  name               |     cpu0     cpu1     cpu4     cpu5     cpu8     cpu9
------------------------+------------------------------------------------------
 24 cleanwin            |     6446     4837     6368     2153     2623     1321
 41 level-1             |      100        0        0        0        1        0
 44 level-4             |        0        1        1        1        0        0
 45 level-5             |        0        0        0        0        0        0
 47 level-7             |        0        0        0        0        9        0
 49 level-9             |      100      100      100      100      100      100
 4a level-10            |      100        0        0        0        0        0
 4d level-13            |        6       10        7       16       13       11
 4e level-14            |      100        0        0        0        1        0
 60 int-vec             |     2607     2740     2642     2922     2920     3033
 64 itlb-miss           |     3129     2475     3167     1037     1200      569
 68 dtlb-miss           |   121061    86162   109838    37386    45639    20269
 6c dtlb-prot           |      997      847     1061      379      406      184
 84 spill-user-32       |     2809     2133     2739   200806   332776   454504
 88 spill-user-64       |    45819   207856    93487   228529    68373    77590
 8c spill-user-32-cln   |      784      561      767      274      353      215
 90 spill-user-64-cln   |        9       37       17       39       12       13
 98 spill-kern-64       |    62913    50145    63869    21916    28431    11738
 a4 spill-asuser-32     |     1327      947     1288      460      572      335
 a8 spill-asuser-64     |       26       48       18       54       10       14
 ac spill-asuser-32-cln |     4580     3599     4555     1538     1978      857
 b0 spill-asuser-64-cln |       26        0        0        2        0        0
 c4 fill-user-32        |     2862     2161     2798   191746   318115   435850
 c8 fill-user-64        |    45813   197781    89179   217668    63905    74281
 cc fill-user-32-cln    |     3802     2833     3733    10153    16419    19475
 d0 fill-user-64-cln    |      329    10105     4873    10603     4235     3649
 d8 fill-kern-64        |    62519    49943    63611    21824    28328    11693
108 syscall-32          |     2285     1634     2278      737      957      383
126 self-xcall          |      100        0        0        0        0        0

vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 24 cleanwin            |     5435     4232     6302     6104
 41 level-1             |        0        0        0        0
 44 level-4             |        2        0        0        1
 45 level-5             |        0        0        0        0
 47 level-7             |        0        0        0        0
 49 level-9             |      100      100      100      100
 4a level-10            |        0        0        0        0
 4d level-13            |       15       11       22       11
 4e level-14            |        0        0        0        0
 60 int-vec             |     2813     2833     2738     2714
 64 itlb-miss           |     2636     1925     3133     3029
 68 dtlb-miss           |    90528    70639   107786   103425
 6c dtlb-prot           |      819      675      988      954
 84 spill-user-32       |   175768    39933     2811     2742
 88 spill-user-64       |        0   241348    96907   118298
 8c spill-user-32-cln   |      681      513      753      730
 90 spill-user-64-cln   |        0       42       16       20
 98 spill-kern-64       |    52158    40914    62305    60141
 a4 spill-asuser-32     |     1113      856     1251     1208
 a8 spill-asuser-64     |        0       64       16       24
 ac spill-asuser-32-cln |     3816     2942     4515     4381
 b0 spill-asuser-64-cln |        0        0        0        0
 c4 fill-user-32        |   170744    38444     2876     2784
 c8 fill-user-64        |        0   230381    92941   111694
 cc fill-user-32-cln    |     8550     3790     3612     3553
 d0 fill-user-64-cln    |        0    10726     4495     5845
 d8 fill-kern-64        |    51968    40760    62053    59922
108 syscall-32          |     1839     1495     2144     2083
126 self-xcall          |        0        0        0        0



示例 2 运行带 CPU 过滤的 trapstat

–c 选项可用于限制 trapstat 所针对的 CPU。此示例限定 CPU 为 CPU 1 以及 CPU 1215


example# trapstat -c 1,12-15


vct  name               |     cpu1    cpu12    cpu13    cpu14    cpu15
------------------------+---------------------------------------------
 24 cleanwin            |     6923     3072     2500     3518     2261
 44 level-4             |        3        0        0        1        1
 49 level-9             |      100      100      100      100      100
 4d level-13            |       23        8       14       19       14
 60 int-vec             |     2559     2699     2752     2688     2792
 64 itlb-miss           |     3296     1548     1174     1698     1087
 68 dtlb-miss           |   114788    54313    43040    58336    38057
 6c dtlb-prot           |     1046      549      417      545      370
 84 spill-user-32       |    66551    29480   301588    26522   213032
 88 spill-user-64       |        0   318652   111239   299829   221716
 8c spill-user-32-cln   |      856      347      331      416      293
 90 spill-user-64-cln   |        0       55       21       59       39
 98 spill-kern-64       |    66464    31803    24758    34004    22277
 a4 spill-asuser-32     |     1423      569      560      698      483
 a8 spill-asuser-64     |        0       74       32       98       46
 ac spill-asuser-32-cln |     4875     2250     1728     2384     1584
 b0 spill-asuser-64-cln |        0        2        0        1        0
 c4 fill-user-32        |    64193    28418   287516    27055   202093
 c8 fill-user-64        |        0   305016   106692   288542   210654
 cc fill-user-32-cln    |     6733     3520    15185     2396    12035
 d0 fill-user-64-cln    |        0    13226     3506    12933    11032
 d8 fill-kern-64        |    66220    31680    24674    33892    22196
108 syscall-32          |     2446      967      817     1196      755

示例 3 运行显示 TLB 统计信息的 trapstat

–t 选项显示详细的 TLB 统计信息,其中包括执行 TLB 未命中处理所用的时间。以下示例显示仅处理 D-TLB 未命中就占用了计算机 14.1% 的时间:


example# trapstat -t
cpu m| itlb-miss %tim itsb-miss %tim | dtlb-miss %tim dtsb-miss %tim |%tim
-----+-------------------------------+-------------------------------+----
  0 u|      2571  0.3         0  0.0 |     10802  1.3         0  0.0 | 1.6
  0 k|         0  0.0         0  0.0 |    106420 13.4       184  0.1 |13.6
-----+-------------------------------+-------------------------------+----
  1 u|      3069  0.3         0  0.0 |     10983  1.2       100  0.0 | 1.6
  1 k|        27  0.0         0  0.0 |    106974 12.6        19  0.0 |12.7
-----+-------------------------------+-------------------------------+----
  2 u|      3033  0.3         0  0.0 |     11045  1.2       105  0.0 | 1.6
  2 k|        43  0.0         0  0.0 |    107842 12.7       108  0.0 |12.8
-----+-------------------------------+-------------------------------+----
  3 u|      2924  0.3         0  0.0 |     10380  1.2       121  0.0 | 1.6
  3 k|        54  0.0         0  0.0 |    102682 12.2        16  0.0 |12.2
-----+-------------------------------+-------------------------------+----
  4 u|      3064  0.3         0  0.0 |     10832  1.2       120  0.0 | 1.6
  4 k|        31  0.0         0  0.0 |    107977 13.0       236  0.1 |13.1
=====+===============================+===============================+====
 ttl |     14816  0.3         0  0.0 |    585937 14.1      1009  0.0 |14.5

示例 4 运行显示 TLB 统计信息和页面大小信息的 trapstat

通过指定 –T 选项,trapstat 可显示按页面大小细分的 TLB 未命中信息。在此示例中,使用 8K 页面时的用户模式 TLB 未命中占用了 CPU 0 7.9% 的处理时间,而使用 64K 页面时的用户模式 TLB 未命中占用了 CPU 0 2.3% 的处理时间。

example# trapstat -T -c 0
cpu m size| itlb-miss %tim itsb-miss %tim | dtlb-miss %tim dtsb-miss %tim |%tim
----------+-------------------------------+-------------------------------+----
  0 u   8k|      1300  0.1        15  0.0 |    104897  7.9        90  0.0 | 8.0
  0 u  64k|         0  0.0         0  0.0 |     29935  2.3         7  0.0 | 2.3
  0 u 512k|         0  0.0         0  0.0 |      3569  0.2         2  0.0 | 0.2
  0 u   4m|         0  0.0         0  0.0 |       233  0.0         2  0.0 | 0.0
- - - - - + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - -
  0 k   8k|        13  0.0         0  0.0 |     71733  6.5       110  0.0 | 6.5
  0 k  64k|         0  0.0         0  0.0 |         0  0.0         0  0.0 | 0.0
  0 k 512k|         0  0.0         0  0.0 |         0  0.0       206  0.1 | 0.1
  0 k   4m|         0  0.0         0  0.0 |         0  0.0         0  0.0 | 0.0
==========+===============================+===============================+====
      ttl |      1313  0.1        15  0.0 |    210367 17.1       417  0.2 |17.5

示例 5 运行带条目过滤的 trapstat

通过指定 –e 选项,trapstat 可仅显示特定陷阱类型的统计信息。使用此选项,可最大限度地降低查找特定数据时的探测影响。该示例仅生成有关 CPU 12 到 15 的 dtlb-protsyscall-32 陷阱的统计信息。


example# trapstat -e dtlb-prot,syscall-32 -c 12-15
vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 6c dtlb-prot           |      817      754     1018      560
108 syscall-32          |     1426     1647     2186     1142

vct  name               |    cpu12    cpu13    cpu14    cpu15
------------------------+------------------------------------
 6c dtlb-prot           |     1085      996      800      707
108 syscall-32          |     2578     2167     1638     1452

示例 6 运行采用较高抽样率的 trapstat

以下示例使用 –r 选项指定抽样率为每秒 1000 个样例,并仅过滤出级别为 10 的陷阱。此外,指定 –P 选项可生成可解析的输出。

请注意级别 10 事件之间的时间戳差异:9,998,000 纳秒和 10,007,000 纳秒。这些级别 10 事件对应于系统时钟,缺省情况下,时钟周期为 100 赫兹(即,每 10,000,000 纳秒)。


example# trapstat -e level-10 -P -r 1000
1070400 0 4a level-10 0
2048600 0 4a level-10 0
3030400 0 4a level-10 1
4035800 0 4a level-10 0
5027200 0 4a level-10 0
6027200 0 4a level-10 0
7027400 0 4a level-10 0
8028200 0 4a level-10 0
9026400 0 4a level-10 0
10029600 0 4a level-10 0
11028600 0 4a level-10 0
12024000 0 4a level-10 0
13028400 0 4a level-10 1
14031200 0 4a level-10 0
15027200 0 4a level-10 0
16027600 0 4a level-10 0
17025000 0 4a level-10 0
18026000 0 4a level-10 0
19027800 0 4a level-10 0
20025600 0 4a level-10 0
21025200 0 4a level-10 0
22025000 0 4a level-10 0
23035400 0 4a level-10 1
24027400 0 4a level-10 0
25026000 0 4a level-10 0
26027000 0 4a level-10 0

示例 7 显示 cpu_mondo 比率最高的三个 CPU

以下命令显示 cpu_mondo 比率最高的三个 CPU。

example% trapstat -k cpu_mondo -o 3 10 1
vct name                | cpu0 cpu1 cpu61
------------------------+----------------
9   immu-miss           |    0    0     0
24  cleanwin            |    0    0     0
31  dmmu-miss           |    0    0     0
41  level-1             |    0    0     0
46  level-6             |    0    0     0
49  level-9             |    0    0     0
4a  level-10            |  100   31    16
4d  level-13            |   23   15     8
4e  level-14            |  100   32    18
6c  dtlb-prot           |    0    0     0
7c  cpu_mondo           |   24   16     9
7d  dev_mondo           |    0    0     0
84  spill-user-32       |    0    0     0
8c  spill-user-32-cln   |    0    0     0
98  spill-kern-64       |  423  180   102
a4  spill-asuser-32     |    0    0     0
ac  spill-asuser-32-cln |    0    0     0
c4  fill-user-32        |    0    0     0
cc  fill-user-32-cln    |    0    1     0
d8  fill-kern-64        |  295  165    94
103 flush-wins          |    0    0     0
108 syscall-32          |    0    0     0
122 get-psr             |    0    0     0
127 gethrtime           |    0    0     0
示例 8 将多个 CPU 聚合为四组(按四分位数分组)

以下命令按级别 10 比率将 96 个 CPU 聚合为四组(按四分位数分组)。

example% trapstat -O /tmp/t1 -e level-10 10 1
example% trapstat -I /tmp/t1 -A 4

replay from: trapstat -O /tmp/t1 -e level-10 10 1
vct name     | bin0 bin1 bin2 bin3
-------------+--------------------
4a  level-10 |  440  340  305  306
示例 9 聚合多个 CPU 并排序

以下命令按核心 ID 聚合 96 个 CPU 并进行排序,确定最高的四个。

example% trapstat -A cor -e level-10 -k level-10 -o 4 10 1
vct name     |  cor514  cor549  cor542  cor521
-------------+--------------------------------
4a  level-10 |     197     120     111     106

属性

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

属性类型
属性值
可用性
system/core-os
接口稳定性
用户可读的输出
Uncommitted(未确定)
可解析的输出
Committed(已确定)

另请参见

lockstat(1M)pmap(1)psrset(1M)psrinfo(1M)pbind(1M)ppgsz(1)getpagesizes(3C)

Sun Microelectronics UltraSPARC II User's Manual》,1997 年 1 月,STP1031。

The SPARC Architecture Manual, Version 9》,1994 年,Prentice-Hall 出版。

附注

启用 trapstat 后会产生各种探测影响,具体取决于收集的信息类型。虽然确切的探测影响取决于硬件的具体情况,但可以依据下表进行粗略估计:

选项
大致的探测影响
缺省值
每个陷阱为 3-5%
–e
每个指定陷阱为 3-5%
–t, –T
命中 TSB 的每个 TLB 未命中陷阱为 40-45%,未命中 TSB 的每个 TLB 未命中陷阱为 25-30%

这些探测影响基于 每个陷阱,反映的不是对系统造成的整体影响。例如,使用缺省选项在系统上运行 trapstat,会用总时间的 7% 来处理陷阱,导致的性能下降不到 0.5%;使用 –t–T 选项在系统上运行 trapstat,会用总时间的 5% 来处理 TLB 未命中,导致的性能下降不超过 2.5%。

–t–T 选项运行时,trapstat 在计算 %tim 字段时会将探测影响考虑在内。这可确保无论是否存在 trapstat 扰动,%tim 字段都是衡量给定工作负荷的 TLB 未命中处理用时的准确合理指标。

尽管 %tim 字段包括执行 TLB 未命中处理程序的显性成本,但包括 TLB 未命中陷阱的隐性成本(例如,管道影响、高速缓存污染等)。随着陷阱率增长,这些隐性成本会越来越显著;如果报告的 %tim 值较高(大于 50%),您可以准确推断出有大量时间用在 TLB 未命中陷阱的隐性成本上。

由于可能会导致系统范围的性能下降,所以只有超级用户才能运行 trapstat

受底层统计信息收集方法所限,一次只能运行一个 trapstat 实例。

通过硬件(例如 Hardware Table Walk 或 HWTW)支持 TLB 未命中处理的 UltraSPARC sun4v 平台通过操作系统屏蔽 TLB 未命中。Trapstat 通常会通过虚拟机管理程序 (hypervisor) 禁用 HWTW(如果它已启用)。由于这可能会导致性能大幅降低,所以 sun4v 平台提供了一种替代的“快速”方法来收集 TLB 未命中数据。当前,只有基于 UltraSPARC T1 的系统完全实现了此功能:在其他 sun4v 系统上,由 trapstat 收集的 TLB 未命中数据将始终为 0。