Gre*_*ell 8 linux hardware stability intel
我有一台运行 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`
Run Code Online (Sandbox Code Playgroud)
这是机器继续运转的时候。当机器冻结时,我还没有一个。
什么是“MCE 0”?还有“马华”?我是在查看 CPU 错误还是 RAM 错误?
我有一根 8 GB 的 RAM。
更换硬件(RAM、CPU、主板、电源)的顺序是什么?这台机器以前很稳定。我应该稍微提高CPU电压吗?
我已经阅读了 mcelog 常见问题解答。谷歌搜索结果很少,而且大多数都有其他格式的类似消息(即可能是旧版本的内核/MCE)。
虽然 mcelog 对 MCA 状态寄存器进行了一些解码,但更多可能会有所帮助。
从http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html下载合并的英特尔® 64 位和 IA-32 架构软件开发人员手册。 该手册有3439 页,非常庞大。以下为 2014 年 9 月版本。
从 /var/log/mcelog 中取出 STATUS 字并将其通过 xxd 管道几次以获取位字段。对我来说,这是:
$ echo "9000004000010005" | xxd -r -p | xxd -b
0000000: 10010000 00000000 00000000 01000000 00000000 00000001 ...@..
0000006: 00000000 00000101 ..
Run Code Online (Sandbox Code Playgroud)
进行一些文本操作,然后对位进行编号:
66665555 55555544 44444444 33333333 33222222 22221111 111111
32109876 54321098 76543210 98765432 10987654 32109876 54321098 76543210
-----------------------------------------------------------------------
10010000 00000000 00000000 01000000 00000000 00000001 00000000 00000101
Run Code Online (Sandbox Code Playgroud)
从手册的第 15.3.2.2 节中提取状态 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 在另一台机器上很高兴,但问题解决了。