JavaScript is required to for searching.
跳过导航链接
退出打印视图
手册页第 1M 部分:系统管理命令     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

简介

System Administration Commands-第 1 单元

System Administration Commands-第 2 单元

luxadm(1M)

mail.local(1M)

makedbm(1M)

makemap(1M)

masfcnv(1M)

mdlogd(1M)

mdmonitord(1M)

mdnsd(1M)

medstat(1M)

metaclear(1M)

metadb(1M)

metadetach(1M)

metadevadm(1M)

metahs(1M)

metaimport(1M)

metainit(1M)

metaoffline(1M)

metaonline(1M)

metaparam(1M)

metarecover(1M)

metarename(1M)

metareplace(1M)

metaset(1M)

metassist(1M)

metastat(1M)

metasync(1M)

metattach(1M)

mib2mof(1M)

mibiisa(1M)

mkbootmedia(1M)

mkdevalloc(1M)

mkdevmaps(1M)

mkfifo(1M)

mkfile(1M)

mkfs(1M)

mkfs_pcfs(1M)

mkfs_udfs(1M)

mkfs_ufs(1M)

mknod(1M)

mkntfs(1M)

mkpwdict(1M)

modinfo(1M)

modload(1M)

modunload(1M)

mofcomp(1M)

mofreg(1M)

monacct(1M)

monitor(1M)

mount(1M)

mountall(1M)

mountd(1M)

mount_hsfs(1M)

mount_nfs(1M)

mount_pcfs(1M)

mount_smbfs(1M)

mount_tmpfs(1M)

mount_udfs(1M)

mount_ufs(1M)

mpathadm(1M)

mpstat(1M)

msgid(1M)

mvdir(1M)

named(1M)

named-checkconf(1M)

named-checkzone(1M)

named-compilezone(1M)

ncaconfd(1M)

ncheck(1M)

ncheck_ufs(1M)

ndd(1M)

ndmpadm(1M)

ndmpd(1M)

ndmpstat(1M)

netadm(1M)

netcfg(1M)

netcfgd(1M)

netservices(1M)

netstat(1M)

netstrategy(1M)

newaliases(1M)

newfs(1M)

newkey(1M)

nfs4cbd(1M)

nfsd(1M)

nfslogd(1M)

nfsmapid(1M)

nfsref(1M)

nfsstat(1M)

nscadm(1M)

nscd(1M)

nscfg(1M)

nsdb-list(1M)

nsdb-nces(1M)

nsdbparams(1M)

nsdb-resolve-fsn(1M)

nsdb-update-nci(1M)

nslookup(1M)

nsupdate(1M)

ntfscat(1M)

ntfsclone(1M)

ntfscluster(1M)

ntfscmp(1M)

ntfscp(1M)

ntfsfix(1M)

ntfsinfo(1M)

ntfslabel(1M)

ntfsls(1M)

ntfsprogs(1M)

ntfsresize(1M)

ntfsundelete(1M)

nulladm(1M)

nwamd(1M)

obpsym(1M)

oplhpd(1M)

pageout(1M)

parted(1M)

pbind(1M)

pcitool(1M)

pfedit(1M)

pginfo(1M)

pgstat(1M)

picld(1M)

ping(1M)

pkg2du(1M)

pkgadd(1M)

pkgadm(1M)

pkgask(1M)

pkgchk(1M)

pkgcond(1M)

pkg.depotd(1M)

pkgrm(1M)

pkg.sysrepo(1M)

plockstat(1M)

pntadm(1M)

polkit-is-privileged(1M)

pooladm(1M)

poolbind(1M)

poolcfg(1M)

poold(1M)

poolstat(1M)

ports(1M)

poweradm(1M)

poweroff(1M)

powertop(1M)

pppd(1M)

pppoec(1M)

pppoed(1M)

pppstats(1M)

praudit(1M)

prctmp(1M)

prdaily(1M)

projadd(1M)

projdel(1M)

projmod(1M)

prstat(1M)

prtacct(1M)

prtconf(1M)

prtdiag(1M)

prtdscp(1M)

prtfru(1M)

prtpicl(1M)

prtvtoc(1M)

psradm(1M)

psrinfo(1M)

psrset(1M)

pwck(1M)

pwconv(1M)

quot(1M)

quota(1M)

quotacheck(1M)

quotaoff(1M)

quotaon(1M)

rad(1M)

raidctl(1M)

ramdiskadm(1M)

rarpd(1M)

rcapadm(1M)

rcapd(1M)

rctladm(1M)

rdate(1M)

rdisc(1M)

reboot(1M)

rem_drv(1M)

remove_allocatable(1M)

removef(1M)

reparsed(1M)

repquota(1M)

restricted_shell(1M)

rexd(1M)

rexecd(1M)

rlogind(1M)

rmmount(1M)

rmt(1M)

rmvolmgr(1M)

rndc(1M)

rndc-confgen(1M)

roleadd(1M)

roledel(1M)

rolemod(1M)

root_archive(1M)

route(1M)

routeadm(1M)

routed(1M)

rpcbind(1M)

rpc.bootparamd(1M)

rpcinfo(1M)

rpc.mdcommd(1M)

rpc.metad(1M)

rpc.metamedd(1M)

rpc.metamhd(1M)

rpc.rexd(1M)

rpc.rstatd(1M)

rpc.rusersd(1M)

rpc.rwalld(1M)

rpc.smserverd(1M)

rpc.sprayd(1M)

rpc.yppasswdd(1M)

rpc.ypupdated(1M)

rquotad(1M)

rsh(1M)

rshd(1M)

rstatd(1M)

rtc(1M)

rtquery(1M)

runacct(1M)

rusersd(1M)

rwall(1M)

rwalld(1M)

rwhod(1M)

sa1(1M)

sa2(1M)

sadc(1M)

sar(1M)

sasinfo(1M)

savecore(1M)

sbdadm(1M)

sched(1M)

sckmd(1M)

scmadm(1M)

sconadm(1M)

sendmail(1M)

sftp-server(1M)

shadowd(1M)

shadowstat(1M)

share(1M)

shareall(1M)

sharectl(1M)

share_nfs(1M)

share_smb(1M)

showmount(1M)

shutacct(1M)

shutdown(1M)

slpd(1M)

smattrpop(1M)

smbadm(1M)

smbd(1M)

smbiod(1M)

smbiod-svc(1M)

smbios(1M)

smbstat(1M)

smrsh(1M)

sasinfo(1M)

sndradm(1M)

sndrd(1M)

sndrsyncd(1M)

snmpdx(1M)

snmp-notify(1M)

snmpXwbemd(1M)

snoop(1M)

soconfig(1M)

soladdapp(1M)

soldelapp(1M)

solstice(1M)

sppptun(1M)

spray(1M)

sprayd(1M)

srptadm(1M)

sshd(1M)

ssh-keysign(1M)

startup(1M)

statd(1M)

stclient(1M)

stmfadm(1M)

stmsboot(1M)

strace(1M)

strclean(1M)

strerr(1M)

sttydefs(1M)

su(1M)

sulogin(1M)

suriadm(1M)

svadm(1M)

svcadm(1M)

svcbundle(1M)

svccfg(1M)

svc.configd(1M)

svc.ipfd(1M)

svc.startd(1M)

swap(1M)

sxadm(1M)

sync(1M)

syncinit(1M)

syncloop(1M)

syncstat(1M)

sysconfig(1M)

sysdef(1M)

syseventadm(1M)

syseventconfd(1M)

syseventd(1M)

syslogd(1M)

talkd(1M)

tapes(1M)

telnetd(1M)

tftpd(1M)

th_define(1M)

th_manage(1M)

tic(1M)

tncfg(1M)

tnchkdb(1M)

tnctl(1M)

tnd(1M)

tninfo(1M)

tpmadm(1M)

traceroute(1M)

trapstat(1M)

ttymon(1M)

tunefs(1M)

turnacct(1M)

txzonemgr(1M)

tzreload(1M)

tzselect(1M)

uadmin(1M)

ucodeadm(1M)

ufsdump(1M)

ufsrestore(1M)

umount(1M)

umountall(1M)

System Administration Commands-第 3 单元

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

trapstat

- 报告陷阱统计信息

用法概要

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

描述

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

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

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

UltraSPARC I(已过时)、II 和 III 通过操作系统陷阱来处理转换后备缓冲器 (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),则数据的格式如下:

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

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

-I statfile

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

-I 选项不能与 interval 和 count 一起指定。

-k key1,...

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

使用 trapstat -l 可以列出所有事件名称。使用 -lt-lT 可以列出 TLB 格式的键名称。

-l

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

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

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

-o num

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

-O statfile

将所有数据保存到 statfile 中。以后可以使用 -I 重放该数据。

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

-O 的用途是捕获所有的可用数据。它与以下数据缩减选项不兼容:-A-k-m-o

-P

生成可解析的输出。在不带其他数据收集修改选项(即,-e-t-T)的情况下运行时,trapstat 的可解析输出格式如下:

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

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

-r rate

将抽样率显式设置为每秒 rate 个样例。如果指定该选项,trapstat 的输出将由每秒的陷阱数更改为每抽样间隔的陷阱数。

-t

启用 TLB 统计信息。

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

字段
内容
1
时间戳(自启动以来的纳秒数)
2
CPU 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 统计信息,其中包含页面大小信息。与 -t 选项一样,所显示的表包含四个主要数据列:itlb-missitsb-missdtlb-missdtsb-miss。这些列包含对应事件的绝对数量以及处理该事件所用 CPU 时间的百分比。给出的 CPU 时间百分比仅针对单个 CPU。该表中的行对应于 CPU,每个 CPU 占用两个行集:一个行集显示用户级事件(以 u 表示),另一个行集显示内核级事件(以 k 表示)。每个行集包含的行数与所支持的页面大小(请参见 getpagesizes(3C))相对应。对于每一行,在最右侧的列中显示汇总的CPU 时间百分比。使用虚线表示两个行集;使用实线表示 CPU。如果除了 -T 选项外还指定了可解析选项 (-P),则数据的格式如下:

字段
内容
1
时间戳(自启动以来的纳秒数)
2
CPU 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
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 实例。