Oracle® VM Server for SPARC 3.3 管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

通过映射 CPU 和内存地址来确定出错位置

本节介绍如何能够将 Oracle Solaris 故障管理体系结构 (Fault Management Architecture, FMA) 报告的信息与标记为出现故障的逻辑域资源相关联。

FMA 以物理 CPU 编号形式报告 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)。pasize 对应于该行中相应字段的值。

  • 如果找到了这样的条目,则 PA 所在的域就是其下方列出此条目的域,该域中的相应实际地址由 ra + (PA - pa) 指定。

  • 如果未找到这样的条目,则 PA 不在任何域中。

CPU 和内存映射示例

示例 17-4  确定域配置

以下命令将生成一个可解析的逻辑域配置长列表。

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
...
示例 17-5  确定与物理 CPU 编号对应的虚拟 CPU

该逻辑域配置如Example 17–4 所示。此示例介绍如何确定与物理 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。