ECC Chipkill ошибки: какой DIMM?

8

На наших серверах часто возникают проблемы с DIMM со следующими ошибками в системном журнале:

7 мая 09:15:31 ядро ​​nolcgi303: EDAC k8 MC0: общая ошибка шины: участвующий процессор (ответ локального узла), тип транзакции памяти с тайм-аутом (без таймаута) (общее чтение), mem или I / O (доступ к памяти) , уровень кэша (общий)
7 мая 09:15:31 nolcgi303 ядро: MC0: страница CE 0xa0, смещение 0x40, зерно 8, синдром 0xb50d, строка 2, канал 0, метка "": k8_edac
7 мая 09:15:31 ядро ​​nolcgi303: MC0: CE - информация отсутствует: k8_edac Ошибка переполнения установлена
7 мая 09:15:31 nolcgi303 ядро: EDAC k8 MC0: расширенный код ошибки: ошибка ECC chipkill x4

Мы можем использовать компакт-диск HP SmartStart, чтобы определить, в каком модуле DIMM произошла ошибка, но для этого необходимо вывести сервер из эксплуатации. Есть ли хитрый способ выяснить, какой крах DIMM, когда сервер работает? Все наши серверы являются оборудованием HP под управлением RHEL 5.

markdrayton
источник
memtest86 +, но я полагаю, что вы не можете запустить его, пока работает RHEL
Алекс Болотов
Вы используете домашнюю страницу HP SIM (или полную SIM-карту) на коробке? если так, то предложу намного больше информации. В противном случае мне нужно было бы узнать немного больше информации о смещении памяти от более подробной ошибки.
Chopper3
Мы не запускаем какие-либо устройства HP SIM на коробке, поскольку мы обычно находим это больше проблем, чем оно того стоит. Если мы не можем определить, какой модуль DIMM мертв, пока он в сети, это не показательный шаг - я просто ищу способы сэкономить время: ~)
markdrayton

Ответы:

4

В дополнение к использованию кодов EDAC, вы можете использовать CLI только утилиты HP, чтобы определить это, когда устройство находится в сети. Кли-версии гораздо более легкие, чем веб-версии, и не требуют, чтобы вы открывали порты или постоянно работал демон.

hpasmcli предоставит вам номер картриджа и модуля неисправных модулей. Немного быстрее, чем анализировать EDAC.

Пример:

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

Статус изменится для неисправных модулей.

мистифицировать
источник
Ах, это круто! Также требуется довольно небольшой набор пакетов: OpemIPMI, OpenIPMI-libs и hp-health. По крайней мере, это то, что работало на BL465 - я не смог заставить демон ipmi работать на BL25: kernel: ipmi_si: Невозможно найти какой-либо системный интерфейс (ы) - идеи? Не много в интернете :(
Маркдрейтон
Я тоже не сталкивался с этой проблемой. Используются только утилиты на серверах DL380 / 5 и DL580 / 5.
Джош
17

MC0, строка 2 и канал 0 являются значимыми. Попробуйте заменить DIMMA1 на CPU0.

В качестве примера мне пришлось идентифицировать неисправный модуль DIMM на сервере Linux с 16 полностью заполненными слотами DIMM и двумя процессорами. Это ошибки, которые я видел на консоли:

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 на моем сервере был DIMMA0 на CPU1.

EDAC расшифровывается как «Обнаружение и исправление ошибок» и задокументировано по адресу http://www.kernel.org/doc/Documentation/edac.txt и /usr/share/doc/kernel-doc-2.6*/Documentation/drivers/edac/edac. .txt в моей системе (RHEL5). CE означает «исправимые ошибки», и, как указано в документации, «CE предоставляет ранние признаки того, что DIMM начинает выходить из строя».

Возвращаясь к описанным выше ошибкам EDAC, которые я видел на консоли моего сервера, MC1 (контроллер памяти 1) означает CPU1, строка 1 упоминается как csrow1 (Chip-Select Row 1) в документации Linux EDAC, а канал 0 означает канал памяти 0 Я проверил диаграмму по адресу http://www.kernel.org/doc/Documentation/edac.txt, чтобы убедиться, что csrow1 и канал 0 соответствуют DIMM_A0 (DIMMA0 в моей системе):

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

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

(В качестве другого примера, если бы я видел ошибки на MC0, csrow4 и канале 1, я бы заменил DIMMB2 на CPU0.)

Конечно, на моем сервере фактически есть два слота DIMM с именем DIMMA0 (по одному для каждого процессора), но опять-таки ошибка MC1 соответствует CPU1, который указан в «Bank Locator» в выводе 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:

(На моей рабочей станции dmidecode фактически показывает номер детали и серийный номер для моих модулей DIMM, что очень полезно.)

Помимо просмотра ошибок на консоли и в журналах, вы также можете увидеть ошибки для каждого MC / CPU, строки / csrow и канала, изучив / sys / devices / system / edac. В моем случае ошибки были только на MC1, csrow1, канале 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

Я надеюсь, что этот пример будет полезен для всех, кто пытается идентифицировать плохой DIMM на основе ошибок EDAC. Для получения дополнительной информации я настоятельно рекомендую прочитать всю документацию Linux EDAC по адресу http://www.kernel.org/doc/Documentation/edac.txt.

Филипп Дурбин
источник
1
Потрясающий ответ! Это, безусловно, лучший ответ здесь, и он отлично покажет, как решить проблему и изолировать плохой модуль DIMM.
Slm
И что делать, если сообщение есть MC0: UE row 0, channel-a= 2 channel-b= 3.
Mitar