本节介绍如何能够将 Oracle Solaris 故障管理体系结构 (Fault Management Architecture, FMA) 报告的信息与标记为出现故障的逻辑域资源相关联。
FMA 以物理 CPU 编号形式报告 CPU 错误,以物理内存地址形式报告内存错误。
如果您想要确定发生错误的逻辑域,以及该域中相应的虚拟 CPU 编号或实际内存地址,则必须执行映射。
您可以查找与给定的物理 CPU 编号对应的域和虚拟 CPU 编号。
首先,使用以下命令为所有域生成一个可解析的长列表:
primary# ldm list -l -p
在列表的 VCPU 部分中查找 pid 字段等于物理 CPU 编号的条目。
如果找到了这样的条目,则 CPU 所在的域就是其下方列出此条目的域,该域中的虚拟 CPU 编号由此条目的 vid 字段指定。
如果未找到这样的条目,则 CPU 不在任何域中。
您可以查找域以及该域中的实际内存地址(与给定物理内存地址 (PA) 对应)。
首先,为所有域生成一个可解析的长列表。
primary# ldm list -l -p
请在该列表的 MEMORY 部分中查找 PA 介于 pa 和 (pa + size - 1) 闭合区间内的行;即 pa ≤ PA ≤ (pa + size - 1)。pa 和 size 对应于该行中相应字段的值。
如果找到了这样的条目,则 PA 所在的域就是其下方列出此条目的域,该域中的相应实际地址由 ra + (PA - pa) 指定。
如果未找到这样的条目,则 PA 不在任何域中。
以下命令将生成一个可解析的逻辑域配置长列表。
primary# ldm list -l -p VERSION 1.6 DOMAIN|name=primary|state=active|flags=normal,control,vio-service| cons=SP|ncpu=4|mem=1073741824|util=0.6|uptime=64801| softstate=Solaris running VCPU |vid=0|pid=0|util=0.9|strand=100 |vid=1|pid=1|util=0.5|strand=100 |vid=2|pid=2|util=0.6|strand=100 |vid=3|pid=3|util=0.6|strand=100 MEMORY |ra=0x8000000|pa=0x8000000|size=1073741824 IO |dev=pci@780|alias=bus_a |dev=pci@7c0|alias=bus_b ... DOMAIN|name=ldg1|state=active|flags=normal|cons=5000| ncpu=2|mem=805306368|util=29|uptime=903| softstate=Solaris running VCPU |vid=0|pid=4|util=29|strand=100 |vid=1|pid=5|util=29|strand=100 MEMORY |ra=0x8000000|pa=0x48000000|size=805306368 ... DOMAIN|name=ldg2|state=active|flags=normal|cons=5001| ncpu=3|mem=1073741824|util=35|uptime=775| softstate=Solaris running VCPU |vid=0|pid=6|util=35|strand=100 |vid=1|pid=7|util=34|strand=100 |vid=2|pid=8|util=35|strand=100 MEMORY |ra=0x8000000|pa=0x78000000|size=1073741824 ...示例 81 确定与物理 CPU 编号对应的虚拟 CPU
该逻辑域配置如示例 80中所示。此示例介绍如何确定与物理 CPU 编号 5 对应的域和虚拟 CPU 以及与物理地址 0x7e816000 对应的域和实际地址。
在列表中浏览 VCPU 条目以查找 pid 字段等于 5 的条目,可以发现以下条目位于逻辑域 ldg1 之下。
|vid=1|pid=5|util=29|strand=100
因此,物理 CPU 编号 5 位于域 ldg1 中,在该域中对应的虚拟 CPU 编号为 1。
在列表中浏览 MEMORY 条目,可以发现以下条目位于域 ldg2 之下。
ra=0x8000000|pa=0x78000000|size=1073741824
其中 0x78000000 <= 0x7e816000 <= (0x78000000 + 1073741824 - 1);即,pa <= PA <= (pa + size - 1)。因此,PA 位于域 ldg2 中,相应的实际地址为 0x8000000 + (0x7e816000 - 0x78000000) = 0xe816000。