步骤1

步骤1

我有一台运行 Ubuntu 14.04 LTS 的不稳定机器,它通过了 9 小时的 memtest86。

我得到这些:

Hardware event. This is not a software error.
MCE 0
CPU 1 BANK 0 
TIME 1414735539 Fri Oct 31 17:05:39 2014
MCG status:
MCi status:
Corrected error
Error enabled
MCA: Internal parity error
STATUS 9000004000010005 MCGSTATUS 0
MCGCAP c09 APICID 2 SOCKETID 0 
CPUID Vendor Intel Family 6 Model 58`

这是机器继续运转的时候。当机器死机时我还没有一个。

什么是“MCE 0”?还有“马华”?我正在查看 CPU 错误还是 RAM 错误?

我有一根 8 GB RAM。

我应该按什么顺序更换硬件(RAM、CPU、主板、电源)?机器以前很稳定。我应该把CPU电压调高一点吗?

我已阅读 mcelog 常见问题解答。 Google 结果很少,而且大多数都有其他格式的类似消息(即可能是旧版本的内核/MCE)。

答案1

虽然 mcelog 对 MCA 状态寄存器进行了一些解码,但更多解码可能会有所帮助。

步骤1

从以下位置下载组合的英特尔® 64 和 IA-32 架构软件开发人员手册:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html 它有 3439 页,内容庞大。以下指的是2014年9月版本。

第2步

从 /var/log/mcelog 中获取 STATUS 字,并将其通过 xxd 传输几次以获取位字段。对于我来说,这是:

$ echo "9000004000010005" | xxd -r -p | xxd -b
0000000: 10010000 00000000 00000000 01000000 00000000 00000001  ...@..
0000006: 00000000 00000101                                      ..

步骤3

进行一些文本操作,然后对位进行编号:

66665555 55555544 44444444 33333333 33222222 22221111 111111 
32109876 54321098 76543210 98765432 10987654 32109876 54321098 76543210
-----------------------------------------------------------------------
10010000 00000000 00000000 01000000 00000000 00000001 00000000 00000101 

步骤4

从手册第 15.3.2.2 节中提取状态 MCi 状态寄存器位定义:

MCi 状态寄存器位

就我而言,位 3:0 表示“MCA 错误代码 5”,mcelog 已将其解释为“内部奇偶校验错误”(请参阅​​第 15.9.1 节)。我希望获得更多信息 - CPU、RAM 或主板是否是奇偶校验错误的可能原因?

位 63 中的 1 仅表示“该寄存器值有效”。位 60 中的 1 仅表示“启用错误报告”。 [52:38] 的值 = 1 表示已纠正一个错误。

位 16 中的 1 看起来很有希望,因为它位于“模型特定错误代码”字段中,但是,唉,根据第 16 节,位 [15] 等于 0 意味着我得到的只是一个“简单”(不是复合)错误,这样我就完成了。

底线:无法判断奇偶校验错误是来自高速缓存还是系统内存。无法说出“内部”是什么意思。内部是什么?所以我交换了内存,同样的问题,然后用另一台机器交换了CPU(很幸运,兼容的插槽),问题就停止了......在两台机器上。这并不完全是我希望从这个先进硬件中得到的精确诊断帮助,而且我不明白为什么“坏”CPU 在另一台机器上很高兴,但问题解决了。

答案2

可能与英特尔勘误表 HSW131(或类似),这是虚假且无害的 MCA 05(内部奇偶校验错误)错误。

解决办法:忽略。

答案3

你在 32 位上运行进程吗???

请在以下位置找到搜索“内部奇偶校验错误”的一些详细信息:

http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/4th-gen-core-family-desktop-specation-update.pdf

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf

HSD55. Internal Parity Errors May Incorrectly Report Overflow in The IA32_MCi_STATUS MSR
    Problem:
    Due to this erratum, uncorrectable internal parity error reports with an
    IA32_MCi_STATUS.MCACOD (bits [15:0]) value of 0005H and an
    IA32_MCi_STATUS.MSCOD (bits [31:16]) va
    lue of 0004H may incorrectly set the
    IA32_MCi_STATUS.OVER flag (bit 62) indicating an overflow even when only a single
    error has been observed.

我在 CentOS 7 (x64) 上运行 32 位 Linux KVM 机器的 Haswell i7-4790(第四代)上也遇到同样的问题

http://ark.intel.com/products/80806/Intel-Core-i7-4790-Processor-8M-Cache-up-to-4_00-GHz

答案4

我正在运行一个带有 Intel i5-3550 (Ivy Bridge) 的 Linux 机器,我确实遇到这个问题一段时间了(相同的确切状态值),尽管它只影响了 2 号和 3 号核心(而且大多数只影响了 2 号核心),所以我假设硬件很可能已经报废,将它们禁用几周。

我注意到平均运行温度比平时要高,但清理了一下后问题仍然存在。它不仅表现为 MCE 错误消息,还表现为运行进程中不可预测的分段错误和崩溃。

好吧,事实证明,出于某种难以理解的原因,UEFI 决定在 Turbo 模式下将 CPU 时钟频率提高到约 4.1 GHz,而规格说明它只能达到 3.7 GHz。手动重新配置这些限制似乎已经解决了问题。


TL;DR:对于阅读本文的任何人,也请检查超频情况。

相关内容