硬件事件字段

本文说明 RAS 指标、事件结构、严重级别和来源字段。采集范围及启用方式见硬件故障诊断。

EventTracing.Ras.MceThrBackoff 控制阈值中断事件的保存间隔。冷却期间仍累计事件数,因此计数增长量不一定等于已保存记录数。

结果

错误计数

huatuo_bamai_ras_hw_err_total 为接收到的 RAS 事件累计数,按 type 区分 mce、edac、acpi、aer、thr 和 arm_ghes。标签存在不代表当前平台支持对应探针。

huatuo_bamai_ras_hw_err_total{hostname="node-01",region="region-01",type="edac"} 12

以上为示例值。计数单位是事件,并非 EDAC 记录中 err_count 的累加值。网卡硬件丢包及 PFC 指标见内核全景观测,网卡状态变化见异常事件诊断。

事件记录

按 tracer_name=ras 和 tracer_type=event 查询。下面以 EDAC 为例,省略部分字段:

{
    "hostname": "node-01",
    "observed_timestamp": "2026-05-11T08:58:47.329Z",
    "kernel_observed_timestamp": "2026-05-11T08:58:47.328548319Z",
    "tracer_name": "ras",
    "tracer_type": "event",
    "tracer_data": {
        "dev": "MEM",
        "event": "EDAC",
        "type": "Corrected",
        "info": "{\"err_count\":1,\"err_type\":\"Corrected\",\"err_msg\":\"memory read error\",\"label\":\"CPU_SrcID#0_Ha#0_Chan#0_DIMM#0\",\"mc_index\":0,\"addr\":7860269056,\"grain\":128}"
    }
}
字段 说明
tracer_data.dev 设备或部件标识,如 CPU/MEM、MEM、ACPI、PCIe 0000:03:00.0
tracer_data.event 错误来源,见采集范围
tracer_data.type 归一化后的严重级别,见下表
tracer_data.info 包含详细字段的 JSON 字符串,需再次解析;结构取决于事件来源
observed_timestamp 用户态接收事件的时间
kernel_observed_timestamp 内核观测时间转换后的时间戳

严重级别

严重级别用于分类,不等同于恢复成功、业务无影响或必须重启的判断。

type 含义 当前映射
Corrected 已纠正 MCE 无 UC/DEFERRED 标志、EDAC 0、ACPI 1、AER 2、THR
UncorrectedRecoverable 未纠正、可恢复类别 MCE UC、EDAC 1、ACPI 2、AER 0
UncorrectedDeferred 未纠正、延迟处理类别 MCE DEFERRED、EDAC 2
UncorrectedFatal 未纠正、致命类别 EDAC 3、ACPI 3、AER 1
Info 信息记录 EDAC 4、ACPI 0
unknown 无法映射严重级别 未识别的原始值或不携带严重级别的来源

MCE 同时设置 DEFERRED 和 UC 时,优先归为 UncorrectedDeferred。

事件详情

以下字段位于解析后的 tracer_data.info 中。

MCE

寄存器与 Bank 的含义依 CPU 型号而异,诊断时需结合对应处理器手册。

字段 说明
mcg_cpu_cap / mcg_msr_status 全局能力寄存器 MCG_CAP 与状态寄存器 MCG_STATUS
banks_msr_status Bank 状态寄存器 MCi_STATUS,包含错误代码及 UC、DEFERRED、ADDRV、MISCV 等标志
banks_msr_addr MCi_ADDR 错误地址;仅在 ADDRV 有效时解读
banks_msr_misc MCi_MISC 补充信息;仅在 MISCV 有效时解读
mca_synd_msr / mca_ipid_msr AMD 综合征与实例 ID 寄存器
instr_pointer / code_seg 指令指针与代码段;指令指针的有效性需结合 MCG_STATUS
tsc_timestamp CPU 时间戳计数器值,不能直接作为 Unix 时间戳
walltime Unix 时间戳,单位为秒
cpu / cpuid / apicid / socketid 逻辑 CPU、CPUID、APIC ID 和 CPU 插槽编号
bank Machine Check Bank 编号;部件映射依平台而异
cpuvendor 内核记录的 CPU 厂商编码

MCE 阈值中断

字段 说明
vector 中断向量
cpu 逻辑 CPU 编号

EDAC

字段 说明
err_count 本条事件报告的错误次数
err_type / err_msg 归一化严重级别与错误描述
label 驱动报告的内存位置标签;实际插槽位置需结合机器拓扑确认
mc_index 内存控制器编号,从 0 开始
top_layer / mid_layer / low_layer 驱动定义的内存拓扑层次索引;-1 表示未指定
addr 内核报告的错误地址
grain 地址粒度,单位为字节
syndrome ECC 综合征值
driver 驱动提供的补充错误信息,不一定是驱动名称

ACPI GHES

字段 说明
severity 原始严重级别值,当前映射见严重级别表
sec_type 错误段类型 GUID,表示为 16 字节十六进制字符串
fru_id / fru_text 可更换部件标识及描述,是否提供取决于固件
data_len 报告的数据长度,单位为字节
raw_data 十六进制转储;需结合平台和厂商格式解读

非标准错误部分(NVDIMM、CXL 以及各厂商自定义载荷)可能超出复制的窗口。raw_data 只包含该错误部分起点之后实际可用的字节:长度会按剩余窗口截断;记录声明的长度有效时,窗口末尾未使用的字节不会作为载荷输出。窗口还要容纳记录固定字段和起点之前的数据,因此它不是每条记录的 raw_data 容量。data_len 仍上报内核记录中的原始长度。偏移和长度都来自内核记录,使用前会先做边界约束,因此畸形事件不会输出窗口之外的字节。

PCIe AER

字段 说明
dev_name PCIe BDF 地址,如 0000:03:00.0(Domain:Bus:Device.Function)
err_type Corrected、UncorrectedRecoverable、UncorrectedFatal 或 unknown
err_reason AER 状态值对应的错误名称;当前按单一状态值匹配,未匹配时为 unknown
tlp_header TLP 头部的四个十六进制字;头部不可用时为 not available

错误名称描述上报的现象,不能直接推断为设备损坏。以下列出当前解析器识别的状态值。

可纠正错误

状态值 err_reason
0x00000001 Receiver Error
0x00000040 Bad TLP
0x00000080 Bad DLLP
0x00000100 REPLAY_NUM Rollover
0x00001000 Replay Timer Timeout
0x00002000 Advisory Non-Fatal Error
0x00004000 Corrected Internal Error
0x00008000 Header Log Overflow

不可纠正错误

状态值 err_reason
0x00000001 Undefined
0x00000010 Data Link Protocol Error
0x00000020 Surprise Down Error
0x00001000 Poisoned TLP
0x00002000 Flow Control Protocol Error
0x00004000 Completion Timeout
0x00008000 Completer Abort
0x00010000 Unexpected Completion
0x00020000 Receiver Overflow
0x00040000 Malformed TLP
0x00080000 ECRC Error
0x00100000 Unsupported Request Error
0x00200000 ACS Violation
0x00400000 Uncorrectable Internal Error
0x00800000 MC Blocked TLP
0x01000000 AtomicOp Egress Blocked
0x02000000 TLP Prefix Blocked Error

ARM GHES

ARM_GHES 记录的严重级别为 unknown;平台可用性限制见采集范围。

字段 说明
mpidr / midr 十六进制处理器标识;mpidr=0x0 也可能表示内核未提供该值
running_state running、stopped 或 N/A
psci_state 停止状态下的十六进制 PSCI 状态;不适用时为 N/A
affinity_level 十进制亲和层级;未提供时为 N/A