Oracle® Solaris Studio 12.4:性能分析器教程

退出打印视图

更新时间: 2014 年 12 月
 
 

关于硬件计数器分析教程

本教程介绍了如何在名为 mttest 的多线程程序上使用性能分析器来收集和了解时钟分析和硬件计数器分析数据。

您将了解 "Overview"(概述)页面和更改显示哪些度量,检查 "Functions"(函数)视图、"Callers-Callees"(调用方-被调用方)视图、"Source"(源)和 "Disassembly"(反汇编)视图,以及应用过滤器。

您将首先了解时钟分析数据,然后了解 HW 计数器分析数据以及 "Instructions Executed"(执行的指令)(在所有受支持系统上可用的计数器)。接下来您将了解 "Instructions Executed"(执行的指令)和 "CPU Cycles"(CPU 周期)(在大多数而不是所有受支持的系统上可用)以及 "D-cache Misses"(数据高速缓存未命中次数)(在一些受支持的系统上可用)。

如果在具有 "D-cache Misses"(数据高速缓存未命中次数) (dcm) 的精确硬件计数器的系统上运行,则还将学习如何使用 IndexObject 和 MemoryObject 视图,以及如何检测高速缓存行的伪共享。

程序 mttest 是一个简单程序,对伪数据应用各种同步选项。该程序实现多项不同任务,每个任务都使用一种基本算法:

  • 将多个工作块排队,缺省情况下为四个。每个工作块都是结构 Workblk 的一个实例。

  • 衍生多个线程以处理工作,缺省情况下也是四个。向每个线程传递其专用工作块。

  • 在每个任务中,使用特定的同步基元控制对工作块的访问。

  • 在同步之后,处理块的工作。

在记录的实验中看到的数据将与此处显示的数据不同。用于本教程中屏幕抓图的实验是在运行 Oracle Solaris 11.2 的 SPARC T5 系统上记录的。来自运行 Oracle Solaris 或 Linux 的 x86 系统的数据将会有所不同。此外,数据收集本质上是统计性的,随实验的不同而不同,即使运行在同一系统和 OS 上也是如此。

您看到的性能分析器窗口配置可能不会与屏幕抓图完全匹配。通过性能分析器,可以拖动窗口各部分之间的分隔条,折叠各部分以及调整窗口大小。性能分析器记录其配置,并在下次运行时使用相同的配置。在捕获教程所示的屏幕抓图的过程中进行了许多配置更改。