JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:性能分析器     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  性能分析器概述

2.  性能数据

3.  收集性能数据

4.  性能分析器工具

5.  er_print 命令行性能分析工具

er_print 语法

度量列表

控制函数列表的命令

functions

metrics metric_spec

sort metric_spec

fsummary

fsingle function_name [N]

控制调用方-被调用方列表的命令

callers-callees

csingle function_name [N]

cprepend function-name [N | ADDR]

cappend function-name [N | ADDR]

crmfirst

crmlast

控制调用树列表的命令

calltree

控制泄漏和分配列表的命令

leaks

allocs

控制源代码和反汇编代码列表的命令

pcs

psummary

lines

lsummary

source|src { filename | function_name } [ N]

disasm|dis { filename | function_name } [ N]

scc com_spec

sthresh value

dcc com_spec

dthresh value

cc com_spec

控制源文件搜索的命令

setpath path_list

addpath path_list

pathmap old-prefix new-prefix

控制硬件计数器数据空间和内存对象列表的命令

data_objects

data_single name [N]

data_layout

memobj mobj_type

mobj_list

mobj_define mobj_type index_exp

控制索引对象列表的命令

indxobj indxobj_type

indxobj_list

indxobj_define indxobj_type index_exp

用于 OpenMP 索引对象的命令

OMP_preg

OMP_task

支持线程分析器的命令

races

rdetail race_id

deadlocks

ddetail deadlock_id

列出实验、抽样、线程和 LWP 的命令

experiment_list

sample_list

lwp_list

thread_list

cpu_list

控制实验数据过滤的命令

指定过滤表达式

filters filter_exp

列出过滤器表达式的关键字

describe

选择要进行过滤的抽样、线程、LWP 和 CPU

选择列表

选择命令

sample_select sample_spec

lwp_select lwp_spec

thread_select thread_spec

cpu_select cpu_spec

控制装入对象展开和折叠的命令

object_list

object_show object1,object2,...

object_hide object1,object2,...

object_api object1,object2,...

objects_default

object_select object1,object2,...

列出度量的命令

metric_list

cmetric_list

data_metric_list

indx_metric_list

控制输出的命令

outfile {filename|-|--}

appendfile 文件名

limit n

name { long | short } [ :{ shared_object_name | no_shared_object_name } ]

viewmode { user| expert | machine }

compare { on | off }

列显其他信息的命令

header exp_id

ifreq

objects

overview exp_id

statistics exp_id

设置缺省值的命令

dmetrics metric_spec

dsort metric_spec

en_desc { on | off | =regexp }

仅为性能分析器设置缺省值的命令

tabs tab_spec

rtabs tab_spec

tlmode tl_mode

tldata tl_data

杂项命令

procstats

script file

version

quit

help

表达式语法

示例过滤器表达式

er_print 命令示例

6.  了解性能分析器及其数据

7.  了解带注释的源代码和反汇编数据

8.  操作实验

9.  内核分析

索引

度量列表

许多 er_print 命令都使用度量关键字的列表。列表的语法如下:

metric-keyword-1[:metric-keyword2…]

对于动态度量(它们基于度量的数据),度量关键字包含以下三部分:度量类型字符串、度量可见性字符串和度量名称字符串。这些字符串连接在一起且没有空格,如下所示。

flavorvisibilityname

对于静态度量-它们基于实验中装入对象的静态属性(名称、地址和大小),度量关键字包含度量名称和可选的前置度量可见性字符串,两者连接在一起且没有空格:

[visibility]name

度量 flavor 和度量 visibility 字符串由类型和可见性字符组成。

表 5-1 中列出了允许的度量类型字符。包含多个类型字符的度量关键字可扩展为一系列度量关键字。例如,ie.user 可扩展为 i.user:e.user

表 5-1 度量类型字符

字符
说明
e
显示独占度量值
i
显示非独占度量值
a
显示归属度量值(仅适用于调用方-被调用方度量)
d
显示数据空间度量值(仅适用于数据派生的度量)

表 5-2 中列出了允许的度量可见性字符。可见性字符串中可见性字符的顺序无关紧要:它不影响对应度量的显示顺序。例如,i%.useri.%user 都解释为 i.use:i%user

仅可见性不同的度量始终按标准顺序一起显示。如果仅可见性不同的两个度量关键字由某些其他关键字分隔,则度量按标准顺序出现在两个度量中第一个度量的位置。

表 5-2 度量可见性字符

字符
说明
.
将度量显示为时间。适用于计时度量以及度量循环计数的硬件计数器度量。其他度量解释为 "+"。
%
将度量显示为总程序度量的百分比。对于调用方-被调用方列表中的归属度量,将度量显示为所选函数的非独占度量的百分比。
+
将度量显示为绝对值。对于硬件计数器,该值是事件计数。计时度量解释为 "."。
!
不显示任何度量值。不能与其他可见性字符组合使用。

当类型字符串和可见性字符串都具有多个字符时,首先扩展类型。因此,将 ie.%user 扩展为 i.%user:e.%user,然后将其解释为 i.user:i%user:e.user:e%user

对于静态度量,句点 (.)、加号 (+) 和百分号 (%) 这三种可见性字符在用于定义排序顺序时是等效的。因此,sort i%usersort i.usersort i+user 均表示只要包含用户 CPU 时间以任一形式可见,分析器就应该按它排序;而 sort i!user 则表示不管非独占用户 CPU 时间是否可见,分析器都应该按它排序。

对于每种度量类型,可以使用叹号 (!) 可见性字符覆盖内置可见性缺省值。

如果同一度量在度量列表中出现多次,则仅处理第一次出现的该度量,而忽略随后出现的该度量。如果指定的度量不在列表中,则将它附加到列表中。

表 5-3 列出了 计时度量、同步延迟度量、内存分配度量、MPI 跟踪度量以及两个常见的硬件计数器度量的可用 er_print 度量名称字符串。对于其他硬件计数器度量,度量名称字符串与计数器名称相同。通过 metric_list 命令,可以获取已装入实验的所有可用度量名称字符串的列表。使用不带任何其他参数的 collect -h 命令可以获取计数器名称的列表。有关硬件计数器的更多信息,请参见硬件计数器溢出分析数据

表 5-3 度量名称字符串

类别
字符串
说明
计时度量
user
用户 CPU 时间
wall
挂钟时间
total
总线程时间
system
系统 CPU 时间
wait
CPU 等待时间
ulock
用户锁定时间
text
文本缺页时间
data
数据缺页时间
owait
其他等待时间
基于时钟的分析度量
mpiwork
在 MPI 运行时内执行工作(如处理请求或消息)所用的时间
mpiwait
在 MPI 运行时内等待事件、缓冲区或消息所用的时间
ompwork
以串行或并行方式执行工作所用的时间
ompwait
OpenMP 运行时等待同步时所用的时间
同步延迟度量
sync
同步等待时间
syncn
同步等待计数
MPI 跟踪度量
mpitime
MPI 调用所用的时间
mpisend
已启动 MPI 点对点发送数
mpibytessent
“MPI 发送”中的字节数
mpireceive
已完成 MPI 点对点接收数
mpibytesrecv
“MPI 接收”中的字节数
mpiother
对其他 MPI 函数的调用数
内存分配度量
alloc
分配的数量
balloc
分配的字节
leak
泄漏的数量
bleak
泄漏的字节
硬件计数器溢出度量
cycles
CPU 周期
insts
发出的指令
线程分析器度量
raccesses
数据争用访问
deadlocks
死锁

除了表 5-3 中列出的名称字符串外,还有两个只能在缺省度量列表中使用的名称字符串。这两个名称字符串是 hwc(它与任何硬件计数器名称匹配)和 any(它与任何度量名称字符串匹配)。另请注意,cyclesinsts 对于 SPARC 平台和 x86 平台是通用的,但是还存在特定于体系结构的其他类型的名称字符串。

要查看在已装入的实验中可用的度量,请使用 metric_list 命令。