Representing Topology
Topology shows the structure of the system by expressing relationships between system resources. The statistics store represents system topology by combining multiple canonical resource names, where a canonical resource name is a class, res pair. The last canonical name in the SSID is the name of the resource whose topology is described by the SSID. A //:class after a //:res is a topological link to related resources. If you are not familiar with the structure of the system, these SSIDs can help you explore the topology.
Topology mapping can also provide a more user-friendly SSID by omitting implementation
details. For example, statistics from the kstat or dtrace
providers might be mapped to providers such as cpu or
disk.
Often a topology is valid only for a specific time period because events such as failures and hotplug operations change the configuration of a system. To explore past topology, specify the time range with the sstore export command as shown in Using Command Line Interfaces.
The following SSIDs show that this system has only one processor set and one chip but has four cores and four CPUs. All pset and chip resource values are id/0, while core and cpu resources values are id/0, id/1, id/2, and id/3.
$ sstore list //:class.cpu//:res.*//:class.*//:res.*
IDENTIFIER
//:class.cpu//:res.id/0//:class.chip//:res.id/0
//:class.cpu//:res.id/0//:class.core//:res.id/0
//:class.cpu//:res.id/0//:class.pset//:res.id/0
//:class.cpu//:res.id/1//:class.chip//:res.id/0
//:class.cpu//:res.id/1//:class.core//:res.id/1
//:class.cpu//:res.id/1//:class.pset//:res.id/0
//:class.cpu//:res.id/2//:class.chip//:res.id/0
//:class.cpu//:res.id/2//:class.core//:res.id/2
//:class.cpu//:res.id/2//:class.pset//:res.id/0
//:class.cpu//:res.id/3//:class.chip//:res.id/0
//:class.cpu//:res.id/3//:class.core//:res.id/3
//:class.cpu//:res.id/3//:class.pset//:res.id/0The following command shows an alternative way to explore relationships among cores, chips, and CPUs. The previous example shows that CPUs have cores, chips, and processor sets. The following example shows that cores have chips and CPUs.
$ sstore list //:class.core//:res.id/*//:*//:*
IDENTIFIER
//:class.core//:res.id/0//:class.chip//:res.id/0
//:class.core//:res.id/0//:class.cpu//:res.id/0
//:class.core//:res.id/1//:class.chip//:res.id/0
//:class.core//:res.id/1//:class.cpu//:res.id/1
//:class.core//:res.id/2//:class.chip//:res.id/0
//:class.core//:res.id/2//:class.cpu//:res.id/2
//:class.core//:res.id/3//:class.chip//:res.id/0
//:class.core//:res.id/3//:class.cpu//:res.id/3
//:class.core//:res.id/2//:class.cpu//:res.id/2The following command confirms that these SSIDs are topology links:
$ sstore info //:class.core//:res.id/2//:class.cpu//:res.id/2 Identifier: //:class.core//:res.id/2//:class.cpu//:res.id/2 stability: stable description: topology link $ sstore info //:class.cpu//:res.id/3//:class.core//:res.id/3 Identifier: //:class.cpu//:res.id/3//:class.core//:res.id/3 stability: stable description: topology link
You can query statistics and events by specifying only the last canonical resource name in the SSID, as shown by the following comparison:
$ sstore list //:class.core//:res.id/2//:class.cpu//:res.id/2//:* IDENTIFIER //:class.core//:res.id/2//:class.cpu//:res.id/2//:class.chip //:class.core//:res.id/2//:class.cpu//:res.id/2//:class.core //:class.core//:res.id/2//:class.cpu//:res.id/2//:class.pset //:class.core//:res.id/2//:class.cpu//:res.id/2//:event.adm-action //:class.core//:res.id/2//:class.cpu//:res.id/2//:event.fault //:class.core//:res.id/2//:class.cpu//:res.id/2//:stat.usage //:class.core//:res.id/2//:class.cpu//:res.id/2//:stat.interrupt-count //:class.core//:res.id/2//:class.cpu//:res.id/2//:stat.interrupt-time //:class.core//:res.id/2//:class.cpu//:res.id/2//:stat.xcalls $ sstore list //:class.cpu//:res.id/2//:* IDENTIFIER //:class.cpu//:res.id/2//:class.chip //:class.cpu//:res.id/2//:class.core //:class.cpu//:res.id/2//:class.pset //:class.cpu//:res.id/2//:event.adm-action //:class.cpu//:res.id/2//:event.fault //:class.cpu//:res.id/2//:stat.usage //:class.cpu//:res.id/2//:stat.interrupt-count //:class.cpu//:res.id/2//:stat.interrupt-time //:class.cpu//:res.id/2//:stat.xcalls