首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux中启用和验证ECC擦除?

如何在Linux中启用和验证ECC擦除?
EN

Unix & Linux用户
提问于 2020-06-15 16:21:56
回答 1查看 4.3K关注 0票数 9

我用ECC购买了我的第一个系统,并试图了解它在Linux中警报和维护方面的可能性。具体来说,Debian Linux位于带有AMD Opteron 6386 SE CPU和三星M393B2G70QH0-YK0 DDR3 ECC的超微型H8SGL主板上。

我已经了解到,这是可能的擦洗 ECC,这听起来是一个极好的想法。ECC RAM通常可以修复1位错误和检测2位错误.清洗涉及定期读取RAM,以先发制人地修复1位错误,以免导致2位错误。

我还了解到Linux支持这一点,但是我在使用它时遇到了问题,所以我需要一些帮助才能开始并确定设置。

Linux EDAC驱动程序

据我所知,Linux使用一个名为EDAC的子系统以及在/sys/devices/system/edac/下公开的控件来处理ECC。我可以在这里看到我的两个内存控制器(2个节点NUMA):

代码语言:javascript
复制
# ls /sys/devices/system/edac/mc/
mc0  mc1  power  subsystem  uevent

我还可以看到,EDAC驱动程序以某种方式加载:

代码语言:javascript
复制
# edac-util --status
edac-util: EDAC drivers are loaded. 2 MCs detected
# lsmod | grep edac
amd64_edac_mod         36864  0
edac_mce_amd           28672  1 amd64_edac_mod

现在我要开始擦洗了。根据Linux文档,刷洗率是通过/sys/devices/system/edac/mc/mc*/sdram_scrub_rate文件公开的,如下所示:

内存控制器使用的擦除速率是通过向属性文件写入最小带宽(以字节/秒计)来设置的。该比率将被转换为至少给出指定比率的内部值。读取文件将返回实际使用的擦洗率。如果配置失败或未实现内存清理,则属性文件的值将为-1。

但当我这么做的时候什么都不会发生。向文件写入一个合理的值(在检查来源CPU文档时位于中间位置)似乎有效,但在读取文件时总是返回0

代码语言:javascript
复制
# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
0
# echo 1000000 >/sys/devices/system/edac/mc/mc0/sdram_scrub_rate
# echo $?
0
# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
0

在挖了这么深的地方之后,我错过了什么?

BIOS配置

我还在BIOS中尝试过不同的设置。在BIOS中有一个用于ECC配置的选项,但它们对从linux中可见的清除率没有任何影响:

现在,我正在尝试User设置,但是我真的看不到它们之间的任何区别。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-06-24 07:09:51

这是一个内核错误

这正是控制设置的方式,但是内核中有一个错误,导致硬件的读出始终返回这个CPU的0。

一个修复它的补丁已经排队,但是我不知道它什么时候会流到主内核中。当它发生的时候,我可以更新答案。

在应用了修补程序之后,问题中使用的命令的输出是:

代码语言:javascript
复制
# echo 1000000 >/sys/devices/system/edac/mc/mc0/sdram_scrub_rate
# echo $?
0
# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
781440

781440是由内存控制器mc0每秒擦除的字节数,从请求的1000000量化到最接近的可能值。

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

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

复制
相关文章

相似问题

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