本节介绍如何了解通过上一节中 mttest 样例代码创建的实验中的数据。
从 mttest 目录启动性能分析器并装入实验,如下所示:
% analyzer test.1.er
实验打开时,性能分析器将显示 "Overview"(概述)页面。
首先显示时钟分析度量并包括带颜色的条。大多数线程时间花费在 "User CPU Time"(用户 CPU 时间)中。一些时间花费在 "Sleep Time'(休眠时间)或 "User Lock Time"(用户锁定时间)中。
如果同时记录了 cycles 和 insts 计数器,则将显示 "Derived and Other Metrics"(派生的度量和其他度量)组。派生的度量表示这两个计数器中的度量比率。高的 "Instructions Per Cycle"(每个周期的指令数)值或低的 "Cycles Per Instruction"(每个指令的周期数)值表示效率相对较高的代码。相反,低的 "Instructions Per Cycle"(每个周期的指令数)值或高的 "Cycles Per Instruction"(每个指令的周期数)值则表示效率相对较低的代码。
在此实验中,"HW Counter Profiling"(HW 计数器分析)组显示了两个子组,即 "Memoryspace Hardware Counters"(内存空间硬件计数器)和 "General Hardware Counters"(常规硬件计数器)。"Instructions Executed"(执行的指令)计数器 (insts) 在 "General Hardware Counters"(常规硬件计数器)下列出。如果您收集的数据包括 cycles 计数器,则在 "General Hardware Counters"(常规硬件计数器)下还将列出 "CPU Cycles"(CPU 周期)。如果数据是在具有 precise dcm 计数器的计算机上收集的,则 "L1 D-cache Misses"(L1 数据高速缓存未命中次数)将在 "Memoryspace Hardware Counters"(内存空间硬件计数器)下列出。如果 dcm 计数器可用但不是精确计数器,则 "L1 D-cache Misses"(L1 数据高速缓存未命中次数)将在 "General Hardware Counters"(常规硬件计数器)下列出。精确计数器是在执行导致溢出的指令时产生溢出中断的计数器。幅度可变的“失控”越过导致溢出的指令时提供非精确计数器。即使非精确计数器与内存相关,它也不能用于内存空间分析。有关内存空间分析的更多信息,请参见Oracle Developer Studio 12.5:性能分析器 中的 数据空间分析和内存空间分析。
如果您的系统不支持 dcm,且您编辑了 Makefile 以删除 –h dcm,则会看到 "Instructions Executed"(执行的指令)和 "CPU Cycles"(CPU 周期)计数器。如果编辑了 Makefile 以同时删除 –h dcm 和 –h cycles,则只能看到 "Instructions Executed"(执行的指令)计数器。
您将在本教程接下来的几节中了解这些度量及其解释。