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有冗余)