FreeBSD Daily Topics

2012年5月28日FreeBSD MCA(Machine Check Architecture)よる障害検出

enterprise

FreeBSD and MCA

FreeBSDはMCA(Machine Check Architecture)に対応しています(/usr/src/sys/x86/x86/mca.cあたりを参照⁠⁠。MCAに対応する以前はMCAから障害報告があっても何も対処していませんでしたが、MCAに対応した後は障害情報がログに記録されるようになりました。

MCAに対応しているかどうかはsysctl値を見るなどしてチェックできます。

% sysctl hw.mca
hw.mca.erratum383: 0
hw.mca.amd10h_L1TP: 1
hw.mca.enabled: 1
hw.mca.count: 0
hw.mca.interval: 3600
hw.mca.force_scan: 0
hw.mca.cmc_throttle: 60
%

MCAによる障害報告は、たとえば次のようなものがあります。ここでは障害報告がきた後、パニックが発生しています。

MCA: Bank 1, Status 0xb200000000000115
MCA: Global Cap 0x0000000000000005, Status 0x0000000000000004
MCA: Vendor "GenuineIntel", ID 0x6d8, APIC ID 0
MCA: CPU 0 UNCOR PCC DCACHE L1 RD error


Fatal trap 28: machine check trap while in kernel mode
cpuid = 0; apic id = 00
instruction pointer     = 0x20:0xc08b2c6b
stack pointer           = 0x28:0xc4b6bcbc
frame pointer           = 0x28:0xc4b6bcbc
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 12 (swi4: clock)
trap number             = 28
panic: machine check trapMCA: Bank 1, Status 0xf200000000000115

この例では、とくに「CPU 0 UNCOR」に注目してください。UNCORはUNCORRECTABLE(修復不可能)であることを意味しています。修復可能である場合には自動的に修復が実施されますので良いのですが、この状態(UNCOR)が報告されるようですと、ハードウェア的にプロセッサが故障している可能性があります。ログにMAC UNCORが報告されるようになった場合、プロセッサの交換を検討したほうが良い可能性がありますので注意してください。

おすすめ記事

記事・ニュース一覧