如何解释 MCE 消息?

vez*_*ult 10 linux debian

我注意到最近出现在/var/log/messages我们的一台服务器上的一堆错误(如下)。但是,与 syslog 中的解码条目相比,mce 客户端似乎不太确定错误来源。是否有某种键可以用来解释 MCE 输出?

Nov 12 04:19:19 areion kernel: [14698753.176035] Machine check events logged
Nov 12 04:19:19 areion mcelog: HARDWARE ERROR. This is *NOT* a software problem!
Nov 12 04:19:19 areion mcelog: Please contact your hardware vendor
Nov 12 04:19:19 areion mcelog: MCE 0
Nov 12 04:19:19 areion mcelog: CPU 0 BANK 8
Nov 12 04:19:19 areion mcelog: MISC 640738dd0009159c ADDR 96236c6c0
Nov 12 04:19:19 areion mcelog: TIME 1352711959 Mon Nov 12 04:19:19 2012
Nov 12 04:19:19 areion mcelog: MCG status:
Nov 12 04:19:19 areion mcelog: MCi status:
Nov 12 04:19:19 areion mcelog: MCi_MISC register valid
Nov 12 04:19:19 areion mcelog: MCi_ADDR register valid
Nov 12 04:19:19 areion mcelog: MCA: MEMORY CONTROLLER RD_CHANNELunspecified_ERR
Nov 12 04:19:19 areion mcelog: Transaction: Memory read error
Nov 12 04:19:19 areion mcelog: STATUS 8c0000400001009f MCGSTATUS 0
Nov 12 04:19:19 areion mcelog: MCGCAP 1c09 APICID 20 SOCKETID 1
Nov 12 04:19:19 areion mcelog: CPUID Vendor Intel Family 6 Model 44
Run Code Online (Sandbox Code Playgroud)

所有错误似乎都与同一个内存库有关:

areion:~# awk -F'mcelog:' '/mcelog:.*BANK/{ print $2; }' < /var/log/messages |uniq
 CPU 0 BANK 8 
Run Code Online (Sandbox Code Playgroud)

我运行了 mcelog 守护进程,当我检查错误信息时,它似乎不知道错误来自哪里。只有它们相关联CPU0(我们在这个框中只有一个 CPU):

Memory errors
SOCKET 1 CHANNEL any DIMM any
corrected memory errors:
        77 total
        77 in 24h
uncorrected memory errors:
        0 total
        0 in 24h
Per page corrected memory statistics:
359ffc000: total 2 2 in 24h online

3b93cc000: total 2 2 in 24h online

3ce45c000: total 2 2 in 24h online

96236c000: total 20 20 in 24h online triggered

96545c000: total 9 9 in 24h online

96a82c000: total 9 9 in 24h online

96a8ec000: total 1 1 in 24h online

96fb6c000: total 15 15 in 24h online triggered

9c2edc000: total 15 15 in 24h online triggered

9c5eac000: total 1 1 in 24h online

9c6a1c000: total 1 1 in 24h online
Run Code Online (Sandbox Code Playgroud)

我完全不清楚我将如何解释这些信息。一方面,mce 客户端不指示通道或 DIMM,但解码的消息表明错误发生在 DIMM 8 上。dmesg似乎表明只记录了 42 条消息:

[14698753.176035] Machine check events logged
[14698753.629174] Machine check events logged
[14698815.338595] __ratelimit: 38 callbacks suppressed
[14698815.338628] Machine check events logged
[14698816.020797] Machine check events logged
Run Code Online (Sandbox Code Playgroud)

我似乎收到了混合的消息,这让我想知道根据各种来源报告的信息做出什么假设。

杂项信息:

areion:~# grep 'model name' /proc/cpuinfo |uniq
model name      : Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz

areion:~# apt-cache policy mcelog |grep Installed
  Installed: 1.0~pre3-3

areion:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.6 (squeeze)
Release:        6.0.6
Codename:       squeeze
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 2

您可能想尝试更换有问题的 DIMM(CPU 0、SOCKET 8)并查看是否继续生成 MCE 消息。

mcelog 包针对随时间推移发生的各种 MCE 事件配置了一些默认阈值。查看/etc/mcelog/mcelog.conf详情。对于内存页面错误,阈值是 24 小时内发生 10 个事件。(我不太确定这个数字来自哪里,但这可能是一个合理的参考点)。您的帖子提到了 24 小时内针对一大堆页面的 77 个可纠正事件,因此 DIMM 很可能出现了问题,该问题可能会也可能不会变成更严重的问题。

我不会因为从不同来源收到不一致的信息而感到太沮丧。一般来说,我发现固件级别的任何内容都是特定于平台的(即特定于特定的硬件模型)。我对于固件相关问题的经验法则是,供应商工具通常是最准确的,但最不可用。更通用的开源工具更容易使用,但可能无法提供足够的信息来准确显示正在发生的情况。