__stat 内置变量
此内置变量通过使用 Vue 脚本提供对各种 AIX® 内核组件的系统统计信息的访问。 系统统计信息作为可从任何 ProbeVue 脚本的任何探针点访问的正在运行的计数器提供。 未添加新的探针点以支持系统统计信息。 要访问系统统计信息,必须具有aix.ras.probevue.trace内核跟踪特权。
由于以下原因,系统统计信息很有用:
- 可以在不开启系统跟踪或组件跟踪的情况下访问统计信息。
- 只能显示必填字段。 无法使用当前统计信息命令来执行此操作。 通过直接从内核结构访问字段,可以避免复制大量数据。
- 现在,系统统计信息在 Vue 脚本中可用,以轻松完成算术逻辑操作。 例如,可以使用 ProbeVue 来添加两个磁盘上的操作数。
Vue 内置 __stat 变量允许在全局级别和各个组件级别检索统计信息。 数据作为正在运行的计数器提供, Vue 脚本需要定期访问计数器。 您可以保存所需的值,并计算增量值以获取所需的结果。 由于以下原因,您可以访问系统统计信息:
- 通过使用 Vue 脚本编写简单的统计信息工具,而不调用 C/C++ API 以每秒或按用户请求的时间间隔打印计数器的增量值。
- 在增量值超过阈值时监视计数器值。 当该值超过阈值时,脚本会记录消息。
- 使用 Vue 脚本在计数器的实际值 (不是增量值) 超过阈值 (例如,磁盘的最大服务时间) 时记录消息。
内置 __stat 变量提供了不同的方式来访问源中的统计信息。 从不同的系统组件获取系统统计信息的源。 统计信息访问方式如下所示。
- 同步方式访问
- ProbeVue 在运行 Vue 脚本时提供对系统统计信息的直接访问。 此类型的直接访问是实时数据访问。 缺省情况下, ProbeVue 选择实时数据访问 (如果可用)。 在此方式下可能无法访问每个统计信息,因为组件未提供直接访问,或者在当前线程中无法进行直接访问。
- 异步或高速缓存方式
- 定期从源收集数据,并在 ProbeVue中进行高速缓存。 Vue 脚本使用高速缓存来访问数据。 将在单个会话或所有会话级别调整高速缓存刷新时间间隔。 每个源组件都提供了以异步方式访问统计信息的方法。 在此类情况下,您可以使用 fetch_stats_async_only 可调参数以高速缓存方式提供对所有统计信息的访问权。 当您无法实时数据或要监视不需要实时数据的系统时,将使用高速缓存方式。
示例
- 以下示例显示名为
hdisk9的磁盘每秒的 I/O 传输次数:@@interval:*:clock:1000 { printf("Number of transfers = %lld\n", __stat.io.disk.hdisk9->transfers); } - 以下示例显示服务时间单位为微秒:
@@syscall:*:read:exit { rdservtime = __stat.io.disk.hdisk10->rd_service_time; printf(“rdservtime=%lld microseconds\n”, rdservtime); }
__stat 内置语法
使用 __stat 内置表达式的一般语法如下: __stat.<level1_keyword>[.<level2_keyword>.....][.<inst1_keyword>....]-><fieldname>
下表显示了 "存储器 IO 统计信息" 的预定义级别和实例:
下表显示了 "网络统计信息" 的预定义级别和实例: