我有一台有768 GiB的ECC DDR4 ram的机器。其中一个模块是片状的,需要替换:dmesg
填充了如下条目:
[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错误:
$ 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
发生了错误,但这必须是一个逻辑地址,因为物理地址的上端低于该地址。我的系统拥有的最高内存映射物理地址是:
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
根本没有列出任何通道--但是它的完整输出确实有助于说明哪些物理地址范围对应于主板上的(标记的)套接字:
$ sudo dmidecode -t memory|grep -i channel
$
同样,grep -i 'System RAM' /proc/iomem
的老把戏也不起作用:
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
节点!)都布置好了。
我能找出哪根物理棒的公羊是假的吗?
发布于 2022-01-07 15:57:46
这一行应该是您所需要的:
[ +0.000013] EDAC MC1: 2 CE memory read error on CPU_SrcID#0_MC#1_Chan#2_DIMM#0 (channel:2 slot:0
要阅读这篇文章:
CPU_SrcID#0=(CPU0)MC#1=(Memory Controller 1
你的edac-util
列表显示了
0-3)Chan#2_DIMM#0=(Would be C0 DIMM).
存储通道应从0(A0/A1)、1(B0/B1)、2(C0/C1)等开始。DIMM0将是该通道的主时隙。
应该能够在以下方面找到相同的信息:
edac-util -v
它报告UE/CE。
发布于 2021-03-25 02:14:50
由于内存库的交织和映射,很难确定一个操作使用的是哪个模块。
如何删除一半的模块,然后看看问题是否仍然存在?继续分割直到找到罪魁祸首。为了加快搜索速度,在测试时运行(==引导到) memtest86+以强制出现错误。许多Linux安装DVD(例如Ubuntu)都有一个memtest86+映像,您可以轻松地启动。
https://unix.stackexchange.com/questions/641021
复制相似问题