ECC内存对系统稳定性有一定帮助

一、说明

1.ECC内存作用

提升系统稳定性,特别是大内存。
比如有时候的蓝屏死机就是因为内存出错,重启后就没问题了。
服务器这种特别依赖大内存的应用场景,非常依赖ECC。即使1个月死机一次也是不能忍受的。

2.作用机理

通过增加一个额外的 ECC 位,称为奇偶校验位,如果一个位出错,可以纠正。

3.稳定性

带寄存器ECC>纯ECC>DDR5片上ECC

4.ECC内存条件

cpu支持、主板支持(芯片组)、系统支持(主流操作系统都支持)。

二、支持情况

下面的情况只能说大概,并不绝对,具体还要看具体CPU和主板芯片组
因为不同时代,厂家对不同系列的定位不同,还有些定制的cpu,所以不绝对
支持带寄存器的ECC通常不会支持纯ECC,反之也是

1.服务器板U通常为支持带寄存器ECC

比如至强和霄龙系列及更早的企业级系列。

2.AMD锐龙系列(民用平台)通常支持纯ECC

锐龙系列AM4(DDR4)时代,除了少数代的apu不支持,其它的cpu和pro版apu都支持纯ECC,
但是绝大多数主板上纯ECC内存只能以非ECC模式运行(华擎全系列和华硕部分高端系列支持纯ECC)。
AM5(DDR5)使用自带片上ECC,所以支持。

3.intel酷睿系列(民用平台)通常不支持ECC

12代之前,通常不支持ECC,个别型号支持。
12代之后,因为DDR5自带片上ECC,所以支持。(如果用DDR4的就不支持)

4.AMD线程撕裂者和Intel工作站

通常至少支持纯ECC

三、linux下验证

安装软件

apt-get install dmidecode

运行以下命令

dmidecode -t memory

找到 Error Correction Type

1.普通内存显示如下:

Error Correction Type: None

2.纯ECC和带寄存器的ECC显示如下:

Error Correction Type: Multi-bit ECC

四、windows下验证

打开Powershell
输入以下(多行带入)

Get-WmiObject Win32_PhysicalMemory |
    Select-Object -Property PSComputerName, DeviceLocator, Manufacturer, PartNumber, @{label = "Size/GB" ; Expression = {$_.capacity / 1GB}}, Speed, datawidth, totalwidth, @{label = "ECC" ; Expression = {
        if ( $_.totalwidth > $_.datawidth ) {
            "$($_.DeviceLocator) is ECC memory type"
        }
        else {
            "$($_.DeviceLocator) is non-ECC Memory Type"
        }
    }
} | Out-GridView

会弹出结果,比如我这个就是非ECC的普通内存,如果是ECC内存会显示is ECC memory type

(看上面的命令就知道了,这个命令是我看别人的,大概是调用windows的系统函数,用内存的位宽来判断,因为ECC有冗余)

怎么查看主板支不支持ES版cpu 怎么看主板是否支持ecc_服务器