第六十一章 使用 ^PERFSAMPLE 监控进程 - 分析维度
分析维度
^PERFSAMPLE
工具中描述了分析的维度。本节提供了一些附加信息。
cpu
- 使用CPU?
(进程状态表示预期的CPU
使用率)
注意:cpu
的 yes
或 no
值不是 on-cpu
时间的真实度量,而是一个估计值。 ^PERFSAMPLE
从进程状态推断 CPU
使用, IRIS
状态跟踪可能与 CPU
使用不直接相关。
如果由于 CPU
(瞬时或持续)过度使用而导致进程正在等待 OS
调度程序使 CPU
可用,这也可能导致 cpu
不准确。
-
ns
- Namespace (current namespace) -
pid
-PID (process ID)
-
rou
-Routine (name of current routine)
-
state
-Process State (process state string, e.g. GSETW)
-
waits
- 内核等待状态(延迟进程的内核级条件)。 -
trace
- 内核跟踪(替代带有内核级详细信息的“状态”) -
wtrace
- 反向内核跟踪(反向内核跟踪,在任何等待状态停止)
trace
和 wtrace
维度具有层次结构。选择一个祖先(用省略号 (...
) 表示)会向下移动到层次结构级别。选择一个非祖传物品进入下一个维度的分析。 h
键在此分层视图和平面视图之间切换。在祖先上按 a
键会聚合其所有后代的后续维度。
等待维度
如果未发现进程正在等待 IRIS
内核内部的任何内容,则等待维度为空。非空值表示需要进程等待(内部阻塞)的条件。
请务必注意,这些是导致进程在应用程序的直接控制之外等待的内部条件。因此,由于冲突的 LOCK
命令、$SYSTEM.Event
等而导致的等待不计入此处。
尽管如此,许多值,尤其是更常见的值,都是应用程序可以间接影响的东西。例如,如果样本显示关键应用程序进程经常等待 diskio
,则表明该进程正在等待从磁盘读取数据库块,并且可能受益于并行化、预取或更多数据库缓存。同样,示例显示的一个进程经常等待 inusebufwt
遇到数据库块冲突,可能需要在应用程序级别进行调查(借助 ^BLKCOL
实用程序)。此维度中的值采用以下助记值,这些值将来可能会发生变化:
diskio
:等待数据库物理块读取inusebufwt
:由于块冲突而等待(^BLKCOL
实用程序可能有助于确定应用程序原因)expand
:等待数据库扩容ecpwait
:等待ECP
服务器的响应jrniowait
:日志缓冲区中没有空间,正在等待日志I/O
jrsyncblk
:等待日志数据被提交jrnlckwait
:等待访问日志缓冲区mirrorwait
:等待活跃的备份镜像成员mirrortrouble
:由于镜像故障状态而被阻止globwait
:由于内部条件阻止全局更新而等待aiowait
:等待异步磁盘I/O
完成wdqwait
:等待写周期完成freebuf
:全局缓冲区已完全耗尽并等待数据库写入gfownwait
:对数据库的访问被阻止resenqXYZ
:等待内部资源XYZ
注意:虽然其中许多对应于包含 W
字母标志(例如 GSETW
、GORDW
等)的规范进程状态,但并非所有情况都如此——diskio
是一个非常常见的例子——而且并非所有 W
状态标志的情况都有内部这里反映的原因(例如上面提到的 LOCKW
)。
保存分析
查看示例后,可以保存它们以供将来分析。为此,请按分析登录页面中的向左箭头。这会将返回到初始的“收集样本”页面,但带有将样本保存到文件的附加选项。选择此选项并输入所需的文件名,例如 perfsample001.txt
。 ^PERFSAMPLE
将文件保存到安装目录\mgr
目录。
要打开保存的分析,请使用 LOAD
标签启动 ^PERFSAMPLE
并指定要打开的文件。例如:
USER>set $namespace = "%SYS"
%SYS>do LOAD^PERFSAMPLE
File: C:\MyIRIS\mgr\perfsample001.txt
^PERFSAMPLE
加载文件,允许分析和检查保存的示例。