在 Solaris OS 下基于时钟的分析中,将按固定的时间间隔存储每个 LWP 的状态。这种时间间隔称为分析间隔。这些信息存储在一个整数数组中:数组的一个元素用于内核维护的十个微记帐状态中的每一个状态。收集的数据通过性能分析器转换为每个状态所用的时间和分析间隔的精度。缺省分析间隔约为 10 毫秒 (10 ms)。收集器提供的高精度分析间隔大约为 1 ms,低精度分析间隔大约为 100 ms,如果 OS 允许,则可使用任意的间隔。运行 collect 命令(不带任何参数)可列显运行该命令的系统所允许的范围和精度。
表 2–1 Solaris 计时度量
度量 |
定义 |
---|---|
用户 CPU 时间 |
在 CPU 中按用户模式运行所用的 LWP 时间。 |
挂钟时间 |
LWP 1 中所用的 LWP 时间。该时间通常称为“挂钟时间”。 |
全部 LWP 时间 |
全部 LWP 时间的总和。 |
系统 CPU 时间 |
在 CPU 中或陷阱状态下按内核模式运行所用的 LWP 时间。 |
等待 CPU 时间 |
等待 CPU 所用的 LWP 时间。 |
用户锁定时间 |
等待锁定所用的 LWP 时间。 |
文本缺页时间 |
等待文本页所用的 LWP 时间。 |
数据缺页时间 |
等待数据页所用的 LWP 时间。 |
其他等待时间 |
等待内核页所用的 LWP 时间,或休眠/ 停止所用的时间。 |
对于多线程实验,将计算所有 LWP 的时间(挂钟时间除外)的总和。所定义的挂钟时间对于多程序多数据 (multiple-program multiple-data, MPMD) 程序没有意义。
计时度量按多种类别说明程序消耗时间的位置,并且可用于改善程序的性能。
高用户 CPU 时间说明程序处理大部分工作的位置,此外还可用于查找重新设计算法后可能受益最多的程序部分。
高系统 CPU 时间说明程序在对系统例程的调用中消耗了大量时间。
高等待 CPU 时间说明准备运行的线程数比可用的 CPU 多,或其他进程正在使用 CPU。
高用户锁定时间说明线程无法获得其请求的锁定。
高文本缺页时间意味着链接程序生成的代码会在内存中进行组织,所以调用或分 支会导致新的页面被装入。创建和使用映射文件(请参见性能分析器联机帮助中的“生成和使用映射文件”)可以修复这种问题。
高数据缺页时间表明对数据的访问会导致新的页面被装入。重新组织程序的数据结构或算法可以修复此问题。