我们使用EDAC来监测DIMM上的错误。
我想知道EDAC如何获得关于这些错误的通知?
我看到一个关键字:固件第一模式。
此设置是否设置在BIOS或内存控制器上?
dmesg日志:
dmesg | grep -i edac
[ 0.346813] EDAC MC: Ver: 3.0.0
[ 97.989717] EDAC sbridge: Seeking for: PCI ID 8086:2fa0
[ 97.989727] EDAC sbridge: Seeking for: PCI ID 8086:2fa0
[ 97.989738] EDAC sbridge: Seeking for: PCI ID 8086:2f60
[ 97.989742] EDAC sbridge: Seeking for: PCI ID 8086:2fa8
[ 97.989745] EDAC sbridge: Seeking for: PCI ID 8086:2fa8
[ 97.989748] EDAC sbridge: Seeking for: PCI ID 8086:2f71
[ 97.989751] EDAC sbridge: Seeking for: PCI ID 8086:2f71
[ 97.989754] EDAC sbridge: Seeking for: PCI ID 8086:2faa
[ 97.989757] EDAC sbridge: Seeking for: PCI ID 8086:2faa
...
...
[ 97.989927] EDAC MC0: Giving out device to module sb_edac controller Haswell SrcID#0_Ha#0: DEV 0000:ff:12.0 (INTERRUPT)
[ 97.989927] EDAC sbridge: Ver: 1.1.2发布于 2020-09-01 07:47:33
这取决于两者都是可能的。
内存控制器报告错误一次;读取错误将清除错误。因此,如果系统固件和操作系统都试图处理EDAC报告,就会发生竞争,错误可能会被漏掉。因此,正确配置的系统将直接处理EDAC报告,使系统固件远离循环,或者使用GHES (适当的ACPI驱动程序)接收来自系统固件的错误(这是“固件优先”模式)。
操作系统使用“直接”EDAC驱动程序处理来自内存控制器的机器检查异常(MCE),并执行任何适当的操作。使用GHES驱动程序,系统固件处理MCE,并通知操作系统。
根据场景的不同,您将看到不同的日志。引导日志应该告诉您配置是什么,如果发生内存错误,您将在固件第一模式的日志中看到“软件事件”,否则会看到“硬件事件”。
这些设置可以是固件设置和操作系统配置的组合。在大多数“低端”ECC系统上,没有相应的固件配置(只访问日志),这完全取决于操作系统。高端服务器将在固件配置中设置,并在手册中描述如何配置它们(以及操作系统)。
https://unix.stackexchange.com/questions/607302
复制相似问题