语法
pmctl [{[ -E [ mode ]] [ -f interval ] {[ -y command ]}} | [ -O Options ] | [ -h ] | [ -r ] | [ -S ]]] [ -s ] [{ -a -y 命令 [ -f interval ]}]
描述
pmctl 命令可在 PMAPI 子系统中启动、停止或复位性能监视器事件的生成,以便与
tprof -E 命令一起支持手动脱机方式。 它还会报告 PMAPI 子系统的当前状态。
标志
| 项 |
描述 |
| 一 |
打开大页分析。 |
| -E [ 模式 ] |
启用基于事件的概要分析。 可指定下列其中一种方式:
- PM_事件
- 将硬件事件指定到概要文件。 如果没有对 -E 标志指定方式,那么缺省事件是处理器周期(PM_CYC)。
- EMULATION
- 启用模拟概要分析方式。
- ALIGNMENT
- 启用对齐概要分析方式。
- ISLBMISS
- 启用指令段后备缓冲区不命中概要分析方式。
- DSLBMISS
- 启用数据段后备缓冲区不命中概要分析方式。
|
| - 间隔 |
指定要使用的采样时间间隔。
- 对于处理器循环、EMULATION、ALIGNMENT、ISLBMISS
和 DSLBMISS 事件,指定 1 到 500 毫秒(缺省值为 10)。
- 对于其他性能监视器事件,请指定 10000 到 MAXINT 出现次数(缺省值为 10000)。
如果将 -f 标志与 -y
标志配合使用,请对其他性能监视器事件指定 1 到 MAXINT 出现次数(缺省值为 10000)之间的值。 |
| -O 选项 |
此 -O 选项可以具有以下值:
- threshold_cmp_val=值
- 设置阈值比较浮点值。
Power ® 处理器具有阈值计数器设施。 阈值计数器与主性能监视器计数器 (PMC) 不同,因为阈值计数器可以计算在来自核心,高速缓存和内存子系统的一组单独的指定开始事件和结束事件之间发生的事件数。
此选项指定可用于与指定开始事件和结束事件之间的事件数进行比较的阈值。
- threshold_event_sel=名称
- 指定必须考虑用于阈值计数的事件。 threshold_event_sel 选项的有效值如下所示:
- THRESHOLD_COUNT_CYCLE
- 计算发生的事件数或设置了控制寄存器 (CTRL) 运行锁存器的周期数。 AIX® 操作系统使用控制寄存器 (CTRL) 位来指示空闲或运行状态。 性能监视单元 (PMU) 也使用此位来避免对空闲时间段内的事件进行计数。 此位通常称为 运行锁存器。 此选项不依赖于冻结条件。 这意味着即使 PMU 冻结了事件计数器的内容,也会对事件进行计数。
- 阈值总数
- 对设置 CTRL 运行锁存器时的已完成指令数进行计数。
此选项不依赖于冻结条件。 这意味着即使 PMU 冻结了事件计数器的内容,也会对事件进行计数。
- THRESHOLD_COUNT_PMC1_EVENTS
- 对 PMC1 事件进行计数。
PMC1 - PMC4 是称为可编程计数器的 32 位寄存器,因为可以计数的事件由程序指定。 此选项取决于冻结条件。 这意味着当 PMU 冻结了事件计数器的内容时,不会对事件进行计数。
- THRESHOLD_COUNT_PMC2_EVENTS
- 对 PMC2 事件进行计数。 此选项取决于冻结条件。 这意味着当 PMU 冻结了事件计数器的内容时,不会对事件进行计数。
- THRESHOLD_COUNT_PMC3_EVENTS
- 对 PMC3 事件进行计数。 此选项取决于冻结条件。 这意味着当 PMU 冻结了事件计数器的内容时,不会对事件进行计数。
- THRESHOLD_COUNT_PMC4_EVENTS
- 对 PMC4 事件进行计数。 此选项取决于冻结条件。 这意味着当 PMU 冻结了事件计数器的内容时,不会对事件进行计数。
|
| -o Options
(continued) |
- threshold_eve_start_sel=名称
- 指定用于启动阈值计数的事件。 有关此选项的有效值,请参阅 threshold_eve_stop_sel。
- threshold_eve_stop_sel=名称
- 指定用于停止阈值计数的事件。 您可以为 threshold_eve_start_sel 和 threshold_eve_stop_sel 选项设置以下值:
- pm_mrk_inst_decoded
- 对采样指令进行解码。
- pm_mrk_inst_disp
- 已分派采样指令。
- pm_mrk_inst_issued
- 将发出采样指令。
- pm_mrk_inst_fin
- 采样指令已完成。
- pm_mrk_inst_cmpl
- 采样指令已完成。
- PM_MRK_LD_MISS_L1
- 缺少采样指令级别 1 (L1) 装入高速缓存。
- PM_MRK_L1_RELOAD_VALID
- 采样指令级别 1 (L1) 重新装入有效。
- EVE_SEL_PMC1
- 发生了在监视方式控制寄存器 (MMCR) 1 中为 PMC1 选择的事件。
- EVE_SEL_PMC2
- 发生了在 MMCR1 中为 PMC2 选择的事件。
- EVE_SEL_PMC3
- 发生了在 MMCR1 中为 PMC3 选择的事件。
- EVE_SEL_PMC4
- 发生了在 MMCR1 中为 PMC4 选择的事件。
- PM_MRK_NTF_FIN
- 采样指令处于下一个完成状态。
- PM_MRK_L2_RC_DISP
- 为采样指令分派了 RC 机器。
- PM_MRK_ST_DONE_L2
- 对采样指令执行 RC 机器。
|
| -o Options
(continued) |
- random _samp_ele_crit=name
- 指定用于选择用于采样的指令的随机条件。 此选项的有效值如下所示:
- ALL_INSTR
- 所有指示信息都符合条件。 此值为缺省设置。
- 装入 STORE
- 该操作将路由到 "装入存储单元" (LSU); 例如, "装入" 和 "存储"。
- PROB_NOP
- 仅样本特殊无操作指令,称为探测器 NOP 事件。
- LARX_STCX
- 仅样本装入和保留已建立索引的 (LARX) 指令,并存储条件已建立索引的 (STCX) 指令。
- 装入采样
- 仅样本装入指令。
- 长延时操作
- 仅样本长等待时间指令 (div/sqrt/mul)。
- STORE_抽样
- 仅样本商店指示信息。
- 装入 MISSES
- 仅样本装入不命中指令。
- LOAD_HIT_STORE
- 仅样本 load-hit-store 指令。 此值仅适用于装入操作可以将数据从商店队列转发到完成状态的情况。 此值不适用于装入命中商店指令在商店队列中但装入操作与商店部分重叠的情况。
- 分支预测
- 仅样本分支-错误预测指令。
- 分支预测目录
- 仅样本分支错误预测事件 (Direction , CR 或 CTR)。
- 分支_mispredicts_ta
- 仅样本分支错误预测事件 (TA)。
- BRANCHES_RESOLVED_摘
- 具有解析的样本分支。
- NON_REPEATING_分支
- 仅对非重复分支进行采样。
- 所有分支要求预设
- 对需要预测的所有分支进行采样。
- group_num=事件组
- 指定必须用于 pmctl 命令的组号。 此选项是可选属性。 如果指定此值,那么该组必须具有阈值事件,并且必须将同一事件与 -E 标志配合使用。
|
| -h |
显示联机帮助页信息。 |
| -r |
释放并复位 PMAPI 子系统。 |
| -S |
停止正在生成的性能监视器事件。 |
| -s |
显示 PMAPI 子系统的当前状态。 |
| -y 命令 |
仅对指定命令及其后代打开基于事件的概要分析。 |
安全性
RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。
示例
- 要停止正在生成的性能监视器事件,请输入以下命令:
pmctl –S
- 要复位正在生成的性能监视器事件,请输入以下命令:
pmctl –r
- 要报告 PMAPI 子系统的当前状态,请输入以下命令:
pmctl –s
- 要启动正在生成的性能监视器事件,请输入以下命令:
pmctl –E
- 要仅对指定 workload 命令及其后代启动正在生成的性能监视器事件,请输入以下命令:
pmctl –E –y workload
- 要以手动脱机方式支持 tprof -E 命令,请输入以下命令:
trace -adf -o mydata.trc
trcon
pmctl –E
sleep 10; trcstop
gensyms > mydata.syms
tprof –suker mydata
- 要以手动脱机方式支持使用 tprof -E
命令对 workload 命令及其后代执行概要分析,请输入以下命令:
trace -adf -o mydata.trc
trcon
pmctl –E –y workload
trcstop
gensyms > mydata.syms
tprof –suker mydata
- 要计算在一对不同的阈值开始事件和结束事件之间耗用的阈值计数事件数,并指定阈值值以进行比较,请输入以下命令:
trace -adf -o mydata.trc
trcon
pmctl -E PM_THRESH_MET-O threshold_cmp_val=10000 -O
threshold_event_sel=THRESHOLD_COUNT_CYCLES -O
threshold_eve_start_sel=PM_MRK_L1_RELOAD_VALID -O
threshold_eve_stop_sel=PM_MRK_ST_DONE_L2 -O
random_samp_ele_crit=ALL_INSTR -O group_num=607
sleep 10; trcstop
gensyms > mydata.syms
tprof -suker mydata