发布
社区首页 >问答首页 >从dmesg ECC错误输出中识别物理内存槽

从dmesg ECC错误输出中识别物理内存槽
EN

Unix & Linux用户
提问于 2021-03-25 09:47:24
回答 2查看 1.7K关注 0票数 1

我有一台有768 GiB的ECC DDR4 ram的机器。其中一个模块是片状的,需要替换:dmesg填充了如下条目:

代码语言:javascript
代码运行次数:0
复制
    [Mar25 08:07] mce: [Hardware Error]: Machine check events logged
[  +0.000014] EDAC skx MC1: HANDLING MCE MEMORY ERROR
[  +0.000003] EDAC skx MC1: CPU 0: Machine Check Event: 0x0 Bank 8: 0xdc00008001010092
[  +0.000002] EDAC skx MC1: TSC 0x116da2b2e75b2
[  +0.000001] EDAC skx MC1: ADDR 0x2e9282d900
[  +0.000001] EDAC skx MC1: MISC 0x200801c091001086
[  +0.000004] EDAC skx MC1: PROCESSOR 0:0x50657 TIME 1616659657 SOCKET 0 APIC 0x0
[  +0.000013] EDAC MC1: 2 CE memory read error on CPU_SrcID#0_MC#1_Chan#2_DIMM#0 (channel:2 slot:0 page:0x2e9282d offset:0x900 grain:32 syndrome:0x0 -  OVERFLOW err_code:0x0101:0x0092 socket:0 imc:1 rank:1 bg:2 ba:2 row:0xfc0b col:0x40)

还有可纠正的恢复ECC错误:

代码语言:javascript
代码运行次数:0
复制
$ edac-util --report=simple
mc0: Correctable errors:   0
mc0: Uncorrectable errors: 0
mc1: Correctable errors:   270
mc1: Uncorrectable errors: 0
mc2: Correctable errors:   0
mc2: Uncorrectable errors: 0
mc3: Correctable errors:   0
mc3: Uncorrectable errors: 0
Total CE: 270
Total UE: 0

虽然dmidecode向我展示了许多关于系统及其内存的精彩信息,但I不理解(逻辑) addresses (逻辑)<#>addresses显示在 dmesg**'s输出中的关系,以及**dmidecode(S物理地址)之间的关系。

具体来说,虽然内核似乎告诉我地址0x289282d900发生了错误,但这必须是一个逻辑地址,因为物理地址的上端低于该地址。我的系统拥有的最高内存映射物理地址是:

代码语言:javascript
代码运行次数:0
复制
Handle 0x004F, DMI type 19, 31 bytes
Memory Array Mapped Address
        Starting Address: 0x09000000000
        Ending Address: 0x0BFFFFFFFFF
        Range Size: 192 GB
        Physical Array Handle: 0x004E
        Partition Width: 3

类似地,channel:2 slot:0的有用信息确实帮助我缩小了dimm需要替换的范围,但是dmidecode根本没有列出任何通道--但是它的完整输出确实有助于说明哪些物理地址范围对应于主板上的(标记的)套接字:

代码语言:javascript
代码运行次数:0
复制
$ sudo dmidecode -t memory|grep -i channel
$

同样,grep -i 'System RAM' /proc/iomem的老把戏也不起作用:

代码语言:javascript
代码运行次数:0
复制
00000000-00000000 : System RAM
00000000-00000000 : System RAM
00000000-00000000 : System RAM
00000000-00000000 : System RAM
00000000-00000000 : System RAM
00000000-00000000 : System RAM

令人恼火的是,我的主板手册并没有具体说明这是如何实现的(事实上,还有numa节点!)都布置好了。

我能找出哪根物理棒的公羊是假的吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-01-07 23:57:46

这一行应该是您所需要的:

代码语言:javascript
代码运行次数:0
复制
[  +0.000013] EDAC MC1: 2 CE memory read error on CPU_SrcID#0_MC#1_Chan#2_DIMM#0 (channel:2 slot:0

要阅读这篇文章:

代码语言:javascript
代码运行次数:0
复制
CPU_SrcID#0=(CPU0)MC#1=(Memory Controller 1

你的edac-util列表显示了

代码语言:javascript
代码运行次数:0
复制
0-3)Chan#2_DIMM#0=(Would be C0 DIMM).

存储通道应从0(A0/A1)、1(B0/B1)、2(C0/C1)等开始。DIMM0将是该通道的主时隙。

应该能够在以下方面找到相同的信息:

代码语言:javascript
代码运行次数:0
复制
edac-util -v

它报告UE/CE。

票数 1
EN

Unix & Linux用户

发布于 2021-03-25 10:14:50

由于内存库的交织和映射,很难确定一个操作使用的是哪个模块。

如何删除一半的模块,然后看看问题是否仍然存在?继续分割直到找到罪魁祸首。为了加快搜索速度,在测试时运行(==引导到) memtest86+以强制出现错误。许多Linux安装DVD(例如Ubuntu)都有一个memtest86+映像,您可以轻松地启动。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/641021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档