pmctl 命令

用途

启动、复位或停止正在生成的性能监视器事件。

语法

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
启用数据段后备缓冲区不命中概要分析方式。
- 间隔 指定要使用的采样时间间隔。
  • 对于处理器循环、EMULATIONALIGNMENTISLBMISSDSLBMISS 事件,指定 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_selthreshold_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 子命令。

示例

  1. 要停止正在生成的性能监视器事件,请输入以下命令:
    pmctl –S
  2. 要复位正在生成的性能监视器事件,请输入以下命令:
    pmctl –r
  3. 要报告 PMAPI 子系统的当前状态,请输入以下命令:
    pmctl –s
  4. 要启动正在生成的性能监视器事件,请输入以下命令:
    pmctl –E
  5. 要仅对指定 workload 命令及其后代启动正在生成的性能监视器事件,请输入以下命令:
    pmctl –E –y workload
  6. 要以手动脱机方式支持 tprof -E 命令,请输入以下命令:
    trace -adf -o mydata.trc
    trcon
    pmctl –E 
    sleep 10; trcstop
    gensyms > mydata.syms
    tprof –suker mydata
  7. 要以手动脱机方式支持使用 tprof -E 命令对 workload 命令及其后代执行概要分析,请输入以下命令:
    trace -adf -o mydata.trc
    trcon
    pmctl –E –y workload
    trcstop
    gensyms > mydata.syms
    tprof –suker mydata 
  8. 要计算在一对不同的阈值开始事件和结束事件之间耗用的阈值计数事件数,并指定阈值值以进行比较,请输入以下命令:
    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