oracle数据从高精度到低精度,时钟分析数据 - Oracle® Solaris Studio 12.4:性能分析器...

时钟分析数据

进行时钟分析时,收集的数据取决于操作系统所提供的信息。

Oracle Solaris 下的时钟分析

在 Oracle Solaris 下的时钟分析中,每个线程的状态都按固定的时间间隔存储。 该时间间隔称为分析间隔。使用分析间隔的精度将收集的数据转换为每个状态所用的时间。

缺省分析间隔约为 10 毫秒 (10 ms)。可以指定高精度分析间隔(大约为 1 毫秒)和低精度分析间隔(大约为 100 毫秒)。如果操作系统允许,也可以指定定制间隔。不带任何其他参数运行 collect -h 可输出系统所允许的范围和精度。

下表显示当实验包含时钟分析数据时,性能分析器和 er_print 可显示的性能度量。请注意,来自所有线程的度量加在了一起。

表 2-1Oracle Solaris 上时钟分析的计时度量

度量

定义

Total thread time(总线程时间)

线程在所有状态花费的时间总和。

Total CPU time(CPU 总时间)

在 CPU 中按用户、内核或陷阱模式运行所用的线程时间。

User CPU time(用户 CPU 时间)

以用户模式在 CPU 中运行所花费的线程时间。

System CPU time(系统 CPU 时间)

以内核模式在 CPU 中运行所花费的线程时间。

Trap CPU time(自陷 CPU 时间)

以陷阱模式在 CPU 中运行所花费的线程时间。

User lock time(用户锁定时间)

等待同步锁定所用的线程时间。

Data page fault time(数据缺页时间)

等待数据页所用的线程时间。

Text page fault time(文本缺页时间)

等待文本页所用的线程时间。

Kernel page fault time(内核缺页时间)

等待内核页所用的线程时间。

Stopped time(停止时间)

由于停止而花费的线程时间。

Wait CPU time(等待 CPU 时间)

等待 CPU 所用的线程时间。

Sleep time(休眠时间)

由于休眠而花费的线程时间

计时度量按多种类别说明程序消耗时间的位置,并且可用于改善程序的性能。

高用户 CPU 时间说明程序处理大部分工作的位置。可使用它来查找重新设计算法后可能受益最多的程序部分。

高系统 CPU 时间说明程序在对系统例程的调用中消耗了大量时间。

高等待 CPU 时间说明准备运行的线程数比可用的 CPU 多,或其他进程正在使用 CPU。

高用户锁定时间说明线程无法获得其请求的锁定。

高文本缺页时间意味着链接程序要求的代码会在内存中进行组织,所以很多调用或分支会导致装入新的页面。

高数据缺页时间表明对数据的访问会导致新的页面被装入。重新组织程序的数据结构或算法可以修复此问题。

Linux 下的时钟分析

在 Linux 平台上,只能将时钟数据显示为 CPU 总时间。Linux CPU 时间是用户 CPU 时间和系统 CPU 时间的总和。

针对 OpenMP 程序的时钟分析

如果在 OpenMP 程序上执行时钟分析,还提供其他度量:Master Thread Time(主线程时间)、OpenMP Work Time(OpenMP 工作时间)和 OpenMP Wait Time(OpenMP 等待时间)。

在 Oracle Solaris 上,"Master Thread Time"(主线程时间)是主线程消耗的总时间,它与挂钟时间相对应。该度量在 Linux 上不可用。

在 Oracle Solaris 上,以串行或并行方式执行工作时,"OpenMP Work Time"(OpenMP 工作时间)会累计。在以下情况下,"OpenMP Wait Time"(OpenMP 等待时间)会累计:OpenMP 运行时正在等待进行同步时、该等待正在使用 CPU 时间或正在休眠时,以及正在以并行方式执行工作,但未在 CPU 上安排线程时。

在 Linux 操作系统上,仅当进程在用户模式或系统模式下处于活动状态时,"OpenMP Work Time"(OpenMP 工作时间)和 "OpenMP Wait Time"(OpenMP 等待时间)才会累计。除非您已指定 OpenMP 应执行忙等待,否则,Linux 上的 "OpenMP Wait Time"(OpenMP 等待时间)没有用处。

OpenMP 程序的数据可以在三种查看模式中的任一种模式下显示。在用户模式下,从线程按实际从主线程克隆的方式显示,并使其调用堆栈匹配主线程的调用堆栈。调用堆栈中来自 OpenMP 运行时代码 (libmtsk.so) 的帧会被禁止。在专家用户模式下,主从线程的显示方式不同,编译器生成的显式函数可见,来自 OpenMP 运行时代码 (libmtsk.so) 的框架将被禁止。对于计算机模式,将显示实际的本机堆栈。

针对 Oracle Solaris 内核的时钟分析

er_kernel 实用程序可以收集有关 Oracle Solaris 内核的基于时钟的分析数据。要分析内核,可从命令行直接运行 er_kernel 实用程序,或从性能分析器的 "File"(文件)菜单中选择 "Profile Kernel"(分析内核)。

er_kernel 实用程序捕获内核分析数据,并将数据记录为性能分析器实验,其格式与 collect 实用程序在用户程序上创建的实验格式相同。实验可以由 er_print 实用程序或性能分析器进行处理。内核实验可以显示函数数据、调用方-被调用方数据、指令级数据和时间线,但是不能显示源代码行数据(因为大多数 Oracle Solaris 模块不包含行号表)。

er_kernel 还可以对正在运行的用户有权限的任何进程记录用户级实验。此类实验类似于 collect 创建的实验,但它只包含 "User CPU Time"(用户 CPU 时间)和 "System CPU Time"(系统 CPU 时间)数据,不支持 Java 或 OpenMP 分析。

针对 MPI 程序的时钟分析

可以在用 Oracle Message Passing Toolkit(以前称为 Sun HPC ClusterTools)运行的 MPI 实验中收集时钟分析数据。Oracle Message Passing Toolkit 必须至少为版本 8.1。

Oracle Message Passing Toolkit 已集成在 Oracle Solaris 11 发行版中。如果系统中安装了此工具包,您可以在 /usr/openmpi 中找到它。如果您的 Oracle Solaris 11 系统中尚未安装此工具包,当您为系统配置了软件包系统信息库时,可以使用命令 pkg search openmpi 搜索该工具包。有关在 Oracle Solaris 11 中安装软件的更多信息,请参见《在 Oracle Solaris 11 中添加和更新软件》。

在 MPI 实验中收集时钟分析数据时,还可以查看两个其他度量:

MPI Work Time(MPI 工作时间),该度量将在进程正在 MPI 运行时内执行工作(如处理请求或消息)时累计。

MPI Wait Time(MPI 等待时间),该度量将在进程正在 MPI 运行时内等待事件、缓冲区或消息时累计

在 Oracle Solaris 上,以串行或并行方式执行工作时,MPI 工作时间会累计。在以下情况下,MPI 等待时间会累计:MPI 运行时正在等待进行同步时、该等待正在使用 CPU 时间或正在休眠时,以及正在以并行方式执行工作,但未在 CPU 上调度线程时。

在 Linux 上,仅当进程在用户模式或系统模式下处于活动状态时,MPI 工作时间和 MPI 等待时间才会累计。除非您已指定 MPI 应执行忙等待,否则,Linux 上的 MPI 等待时间没有用处。

注 -

如果要在 Linux 上使用 Oracle Message Passing Toolkit 8.2 或 8.2.1,可能需要解决方法。版本 8.1 或 8.2.1c 不需要解决方法,或者如果要使用 Oracle Solaris Studio 编译器,则任何版本都不需要解决方法。

Oracle Message Passing Toolkit 版本号由安装路径指定,例如 /opt/SUNWhpc/HPC8.2.1,或者,您可以按照如下所示键入 mpirun —V 查看输出,其中版本以斜体表示:

mpirun (Open MPI) 1.3.4r22104-ct8.2.1-b09d-r70

如果您的应用程序是使用 GNU 或 Intel 编译器编译的,并且要对 MPI 使用 Oracle Message Passing Toolkit 8.2 或 8.2.1,则要获取 MPI 状态数据,必须使用 –WI 和 –-enable-new-dtags 选项和 Oracle Message Passing Toolkit link 命令。这些选项将使可执行文件定义 RPATH 及 RUNPATH,从而可使用 LD_LIBRARY_PATH 环境变量启用 MPI 状态库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值