우리는 EDAC를 사용하여 DIMM의 오류를 모니터링합니다.
EDAC가 이러한 오류에 대해 어떻게 통보를 받는지 궁금합니다.
- 메모리 컨트롤러에는 BIOS에 알리는 인터럽트가 있으며 BIOS는 OS에 알립니다.
- 메모리 컨트롤러는 운영 체제에 인터럽트를 직접 알립니다.
키워드를 봤습니다.펌웨어 우선 모드.
이 설정이 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
답변1
상황에 따라 다르며 둘 다 가능합니다.
메모리 컨트롤러는 오류를 한 번 보고하면 오류가 지워집니다. 따라서 시스템 펌웨어와 운영 체제가 모두 EDAC 보고서를 처리하려고 하면 경쟁 조건이 발생하고 오류가 누락될 수 있습니다. 따라서 적절하게 구성된 시스템은 EDAC 보고서를 직접 처리하거나, 시스템 펌웨어를 루프에서 꺼내거나, GHES(적절한 ACPI 드라이버)를 사용하여 시스템 펌웨어에서 오류를 수신합니다(이것이 "펌웨어 우선" 모드입니다).
"직접" EDAC 드라이버를 사용하면 운영 체제는 메모리 컨트롤러의 MCE(머신 검사 예외)를 처리하고 적절한 조치를 취할 수 있습니다. GHES 드라이버를 통해 시스템 펌웨어는 MCE를 처리하고 운영 체제에 알릴 수 있습니다.
시나리오에 따라 다른 로그가 표시됩니다. 부팅 로그는 구성이 무엇인지 알려주어야 합니다. 메모리 오류가 발생하면 펌웨어 우선 모드의 로그에 "소프트웨어 이벤트"가 표시되고, 그렇지 않으면 "하드웨어 이벤트"가 표시됩니다.
이러한 설정은 펌웨어 설정과 운영 체제 구성의 조합일 수 있습니다. 대부분의 "로우엔드" ECC 지원 시스템에는 해당 펌웨어 구성(액세스 로그만)이 없으며 모두 OS에 따라 다릅니다. 고급 서버에는 펌웨어 구성에 설정이 지정되어 있으며 해당 설명서에 설명된 구성 방법(운영 체제와 함께)이 있습니다.