Kesalahan ECC chipkill: DIMM yang mana?

8

Kami sering mendapatkan DIMM di server kami menjadi buruk dengan kesalahan berikut di syslog:

7 Mei 09:15:31 nolcgi303 kernel: EDAC k8 MC0: kesalahan bus umum: prosesor yang berpartisipasi (respons simpul lokal), waktu-habis (tanpa batas waktu) jenis transaksi memori (baca generik), mem atau i / o (akses mem) , level cache (generik)
7 Mei 09:15:31 nolcgi303 kernel: MC0: CE halaman 0xa0, offset 0x40, grain 8, syndrome 0xb50d, baris 2, channel 0, label "": k8_edac
7 Mei 09:15:31 nolcgi303 kernel: MC0: CE - tidak ada informasi tersedia: k8_edac Error Overflow set
7 Mei 09:15:31 nolcgi303 kernel: EDAC k8 MC0: kode kesalahan yang diperluas: ECC chipkill x4 error

Kita dapat menggunakan HP SmartStart CD untuk menentukan DIMM mana yang memiliki kesalahan tetapi itu mengharuskan server keluar dari produksi. Apakah ada cara yang cerdik untuk mengetahui DIMM mana yang bust ketika server menyala? Semua server kami adalah perangkat keras HP yang menjalankan RHEL 5.

markdrayton
sumber
memtest86 + tapi saya kira Anda tidak dapat menjalankannya saat RHEL berjalan
Alex Bolotov
Apakah Anda menjalankan situs SIM HP (atau SIM penuh untuk hal yang sebenarnya) pada kotak? jika demikian itu akan menawarkan lebih banyak info. Kalau tidak, saya perlu tahu sedikit lebih banyak informasi tentang memori offset dari kesalahan yang lebih rinci.
Chopper3
Kami tidak menjalankan salah satu dari hal-hal SIM HP pada kotak karena kami biasanya menemukan lebih banyak masalah daripada nilainya. Jika kita tidak dapat mengetahui DIMM mana yang mati saat daring, ini bukan showstopper - Saya hanya mencari cara untuk menghemat waktu: ~)
markdrayton

Jawaban:

4

Selain menggunakan kode EDAC, Anda dapat menggunakan utilitas HP hanya CLI untuk menentukan ini saat mesin online. Versi cli jauh lebih ringan daripada yang berbasis web dan tidak mengharuskan Anda untuk membuka port atau memiliki daemon yang terus berjalan.

hpasmcli akan memberi Anda kartrid dan modul dari modul yang gagal. Sedikit lebih cepat daripada menganalisis EDAC.

Contoh:

hpasmcli -s "show dimm"

DIMM Configuration
------------------
Cartridge #: 0
Module #: 1
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 2
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 3
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Cartridge #: 0
Module #: 4
Present: Yes
Form Factor: 9h
Memory Type: 13h
Size: 1024 MB
Speed: 667 MHz
Status: Ok

Status akan berubah untuk modul yang gagal.

Josh
sumber
Ah, itu luar biasa! Memerlukan paket yang cukup kecil juga: OpemIPMI, OpenIPMI-libs dan hp-health. Setidaknya itulah yang bekerja pada BL465 - saya tidak bisa menjalankan ipmi daemon pada BL25: kernel: ipmi_si: Tidak dapat menemukan System Interface (s) - ide? Tidak banyak di internet :(
markdrayton
Saya juga tidak mengalami masalah itu. Hanya menggunakan utilitas pada server DL380 / 5 dan DL580 / 5.
Josh
17

MC0, baris 2, dan saluran 0 adalah signifikan. Coba ganti DIMMA1 pada CPU0.

Sebagai contoh, saya harus mengidentifikasi DIMM buruk di server Linux dengan 16 slot DIMM terisi penuh dan dua CPU. Ini adalah kesalahan yang saya lihat di konsol:

EDAC k8 MC1: general bus error: participating processor(local node origin), time-out(no timeout) memory transaction type(generic read), mem or i/o(mem access), cache level(generic)
EDAC MC1: CE page 0x103ca78, offset 0xf88, grain 8, syndrome 0x9f65, row 1, channel 0, label "": k8_edac
EDAC MC1: CE - no information available: k8_edac Error Overflow set
EDAC k8 MC1: extended error code: ECC chipkill x4 error

DIMM buruk di server saya adalah DIMMA0 di CPU1.

EDAC adalah singkatan dari Deteksi Kesalahan dan Koreksi dan didokumentasikan di http://www.kernel.org/doc/Documentation/edac.txt dan /usr/share/doc/kernel-doc-2.6*/Documentation/drivers/edac/edac .txt di sistem saya (RHEL5). CE adalah singkatan dari "kesalahan yang dapat diperbaiki" dan seperti yang ditunjukkan dalam dokumentasi, "CE memberikan indikasi awal bahwa DIMM mulai gagal."

Kembali ke kesalahan EDAC di atas yang saya lihat di konsol server saya, MC1 (Memory Controller 1) berarti CPU1, baris 1 disebut sebagai csrow1 (Chip-Select Row 1) dalam dokumentasi Linux EDAC, dan saluran 0 berarti saluran memori 0 Saya memeriksa grafik di http://www.kernel.org/doc/Documentation/edac.txt untuk melihat bahwa csrow1 dan Channel 0 berhubungan dengan DIMM_A0 (DIMMA0 pada sistem saya):

            Channel 0       Channel 1
    ===================================
    csrow0  | DIMM_A0       | DIMM_B0 |
    csrow1  | DIMM_A0       | DIMM_B0 |
    ===================================

    ===================================
    csrow2  | DIMM_A1       | DIMM_B1 |
    csrow3  | DIMM_A1       | DIMM_B1 |
    ===================================

(Sebagai contoh lain, jika saya melihat kesalahan pada MC0, csrow4, dan Channel 1, saya akan mengganti DIMMB2 pada CPU0.)

Tentu saja, sebenarnya ada dua slot DIMM yang disebut DIMMA0 di server saya (satu untuk setiap CPU), tetapi sekali lagi kesalahan MC1 sesuai dengan CPU1, yang terdaftar di bawah "Bank Locator" di output dari dmidecode:

[root@rce-8 ~]# dmidecode -t memory | grep DIMMA0 -B9 -A8
Handle 0x002E, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x002B
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMMA0
        Bank Locator: CPU0
        Type: DDR2
        Type Detail: Synchronous
        Speed: 533 MHz (1.9 ns)
        Manufacturer:  
        Serial Number:  
        Asset Tag:  
        Part Number:  
--
Handle 0x003E, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x002B
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMMA0
        Bank Locator: CPU1
        Type: DDR2
        Type Detail: Synchronous
        Speed: 533 MHz (1.9 ns)
        Manufacturer:  
        Serial Number:  
        Asset Tag:  
        Part Number:

(Di workstation saya, dmidecode sebenarnya menunjukkan Nomor Bagian dan Nomor Seri untuk DIMM saya, yang sangat berguna.)

Selain melihat kesalahan pada konsol dan log, Anda juga dapat melihat kesalahan per MC / CPU, baris / csrow, dan saluran dengan memeriksa / sys / devices / system / edac. Dalam kasus saya kesalahannya hanya pada MC1, csrow1, saluran 0:

[root@rce-8 ~]# grep "[0-9]" /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count
/sys/devices/system/edac/mc/mc0/csrow0/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow0/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow1/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow1/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow2/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow2/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow3/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow3/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow4/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow4/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow5/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow5/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow6/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow6/ch1_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow7/ch0_ce_count:0
/sys/devices/system/edac/mc/mc0/csrow7/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow0/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow0/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow1/ch0_ce_count:6941652
/sys/devices/system/edac/mc/mc1/csrow1/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow2/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow2/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow3/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow3/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow4/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow4/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow5/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow5/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow6/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow6/ch1_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow7/ch0_ce_count:0
/sys/devices/system/edac/mc/mc1/csrow7/ch1_ce_count:0

Saya harap contoh ini bermanfaat bagi siapa pun yang mencoba mengidentifikasi DIMM yang buruk berdasarkan kesalahan EDAC. Untuk informasi lebih lanjut, saya sangat merekomendasikan membaca semua dokumentasi Linux EDAC di http://www.kernel.org/doc/Documentation/edac.txt

Philip Durbin
sumber
1
Jawaban yang hebat! Sejauh ini, ini adalah jawaban terbaik di sini dan dengan sempurna menuntun Anda melalui cara baik triase masalah dan mengisolasi DIMM buruk.
slm
Dan apa yang harus dilakukan jika pesan itu MC0: UE row 0, channel-a= 2 channel-b= 3.
Mitar