ssid - 统计信息存储标识符
Oracle Solaris 统计信息存储库使用统计信息标识符(称为 ssid),ssid 可命名系统资源、统计信息和事件。SSID 还对事件输出的统计信息和格式指定算术和统计运算。
ssid 由 sstore(1) 命令和 libsstore(3LIB) 库调用使用。ssid 可以通过元数据定义,如 ssid-metadata(7) 手册页中所述。
ssid 是一个字符串,其中只有 //: 是保留序列,用于分隔 ssid 的各个组成部分。每个组成部分均可有自己的字符限制。
标识系统资源需要一对 //:class 和 //:res 组成部分。以下示例标识了 CPU 0:
//:class.cpu//:res.id/0
//:stat 组成部分标识统计信息。以下 SSID 表示 CPU 0 的使用情况:
//:class.cpu//:res.id/0//:stat.usage
某些统计信息可以视为聚合或按选定分区查看,正如 //:part 部分中所述。例如,CPU 使用情况可以按模式(内核、用户等)细分:
//:class.cpu//:res.id/0//:stat.usage//:part.mode
事件是指对资源或类进行时间特定的更改。以下 SSID 描述了 CPU 0 的故障:
//:class.cpu//:res.id/0//:event.fault
可以针对统计信息采取各种不同的运算。例如:
//:class.cpu//:res.id/0//:stat.usage//:part.mode//:op.rate
可以针对事件采取一组预定义的格式化操作。
//:class.cpu//:res.id/0//:event.fault//:fmt.summary
系统资源之间的关系可以表示为 ssid 中的拓扑。
分片和通配符表示法可用于匹配 ssid 中的多项。* 是简单的通配符。以下示例说明如何匹配 ssid 中的 CPU:
//:class.cpu//:res.id/*
//:class.cpu//:res.id///:s.[0:5]
SSID 的每个组成部分都有元数据,其中包含说明和数据类型等信息。使用 sstore(1) 的 info 子命令可检索此信息。
集合是对统计信息和事件组的引用。
SSID 可以具有以下组成部分:
生成统计信息的系统。缺省值为 //:system.name/localhost。目前仅支持 //:system.name/localhost。
系统资源由类、资源类型和资源名称的组合标识。类定义资源如何在该类内命名。单个资源可通过同一类中的多个名称获取。例如,以下两个名称均指代同一设备。
//:class.disk//:res.dev/zvblk0
//:class.disk//:res.name/zvblk0
SSID 中的资源名称通常与在管理命令中使用的资源名称相同。
另请注意,某些资源可能会以不同的名称(形式上称为别名)出现在多个类中。例如,某磁盘可能同时出现在 //:class.disk 和 //:class.dev 中。但是,给定资源的所有别名并非始终可用。
类名称只能包含字母数字字符(强烈建议使用小写)和连字符 (-),并且必须以字母数字字符开头。资源名称没有限制。
作为最佳实践,添加类时应使用唯一公司名称。//:class.solaris/ 和 //:class.s/ 已显式保留。//:class.site 可用于管理。
可以使用以下命令查看特定系统上的当前类列表:
$ sstore list //:class.*
可以使用以下命令查看类中的资源:
$ sstore list //:class.cpu//:res.*
资源之间的关系在 ssid 名称空间中表示为拓扑链接。无论拓扑如何,均可按 ssid 中的最后一个类和资源引用系统中的任何资源。资源从不按其拓扑单独命名。
尽管您无需知道系统拓扑即可命名资源,但很多情况下,浏览和表示拓扑非常有用。通过允许类/资源对出现在其他相关资源之后(如以下示例中所示),可以表示拓扑:
//:class.chip//:res.id/0//:class.cpu//:res.id/0 //:class.chip//:res.id/0//:class.cpu//:res.id/1
这说明芯片 0 包含 cpu 0 和 1。
拓扑仅在特定时间点有效,因为它们会发生变化。通过浏览过去某个时间范围内的名称空间,可以查询过去某个时间点的拓扑。
资源和类均可具有统计信息。统计信息是任何一条关于资源或类的信息。系统提供了一组受支持的通用统计信息类型,例如,计数器(首选)和标量。有关通用元数据和特定统计信息类型的更多信息,请参见 sstore(7)。
//:class.link/phys//:res.name/net0//:stat.in-bytes
只能对统计信息进行分区。通过分区可以动态查看构成该统计信息的实体。分区可以定义为 static 或 dynamic。static 分区包括该分区中各个实体的确切名称的完整枚举(在元数据中)。一个此类 static 分区是 CPU 使用情况的 mode partition,如下所示:
//:class.cpu//:stat.usage//:part.mode
dynamic 分区返回不同的实体列表,具体取决于查询时间。通常,您应当将分区定义为完整。将所有实体组合到一个分区中应当生成 100% 的统计信息。可以使用 sstore list 命令搜索统计信息上的分区,如下所示:
$ sstore list //:class.cpu//:stat.usage//:part.*
事件是资源或类更改的时间特定的信息。目前,系统针对各种资源的故障和管理操作捕获事件。
例如,所有 CPU 的管理操作、故障和警报分别如下所示:
//:class.cpu//:res.id/*//:event.adm-action
//:class.cpu//:res.id/*//:event.fault
//:class.cpu//:res.id/*//:event.alert
允许对统计信息执行一组预定义的数学和统计运算。所有特定统计信息或事件可用的运算均受其类型和元数据限制。
运算的完整列表记录在 ssid-op(7) 中,可以通过以下命令显示:
//:class.cpu//:stat.usage//:part.mode//:op.rate
允许针对事件采取一组预定义的格式化操作。格式化操作的完整列表记录在 ssid-op(7) 中,可以通过以下命令显示:
//:class.cpu//:res.id/0//:event.fault//:fmt.summary
有关更多信息,请参见 ssid-collection.json(5) 手册页
可以使用 * 作为简单的通配符机制。例如,可按如下所示匹配所有类:
//:class.*
* 可以随时出现并与下一个 //: 分隔符匹配。例如,可按如下所示匹配所有类:
//:clas*
还可以使用分片匹配名称空间中的资源、统计信息、分区以及其他实体的列表。这在使用运算时可能非常有用。
可以使用分片匹配 ID 为 0-5 的 CPU,如以下示例中所示:
//:class.cpu//:res.id///:s.[0:5]
sstore(1)、ssid-collection.json(5)、ssid-metadata(7)、ssid-op(7)、sstoreadm(1)