Inspur/Kaytus parser: неверная идентификация HGX-платы — читается только механич. FRU-серийник, не NVIDIA HGX baseboard identity #21

Closed
opened 2026-07-29 10:25:33 +03:00 by mchus · 0 comments
Owner

Проблема

При разборе onekeylog-дампов Inspur/Kaytus (HGX B200, KR9288-X3) парсер internal/parser/vendors/inspur/ в качестве идентичности «GPU-платы» выдаёт только механический FRU-серийник вендора из component/fru.txt (Board Product : CA, партномер класса YZCA-*).

Этот серийник — механический карриер/трей Inspur, привязанный к шасси. При замене собственно NVIDIA HGX-платы (SXM+NVSwitch, «delta board») он не меняется. В итоге при анализе замены платы парсер даёт ложный вывод «плату не меняли» — серийник тот же, хотя физически стоит другая HGX-плата.

Где лежит правильная идентичность

Настоящая аппаратная идентичность HGX-узла — в log/bmc/oem-commer-log/HGX_HWInfo_FWVersion.log (Redfish HWInfo). Там тройками Model / PartNumber / SerialNumber перечислены:

  • HGX trayModel: P6612-A04, PartNumber: 699-26612-0000-P00
  • HGX baseboardModel: NVIDIA HGX B200 8 GPU, PartNumber: 935-26287-00A0-000 ← это и есть «delta board»
  • 8× GPUModel: B200 180GB HBM3e, PartNumber: 692-2G525-0220-501
  • ссылки @odata.id: /redfish/v1/Systems/HGX_Baseboard_0/Processors/GPU_SXM_1..8

(партномера выше — модельные NVIDIA-SKU, не инстанс-данные)

Доказательство, что источник именно этот

Три дампа одного и того же сервера (обозначу A, B, C по времени):

Источник идентичности дамп A дамп B дамп C
Механич. карриер Inspur CA (component/fru.txt) <carrier-SN> <carrier-SN> <carrier-SN> (тот же)
HGX tray 699-26612 (HGX_HWInfo) <tray-SN-1> <tray-SN-1> <tray-SN-2> ← другой
HGX baseboard 935-26287 (HGX_HWInfo) <bb-SN-1> <bb-SN-1> <bb-SN-2> ← другой

Оба NVIDIA-серийника (tray и baseboard) идентичны между A и B (интервал ~4 недели → это стабильные аппаратные ID) и разом сменились в C. Механический CA-серийник при этом одинаков во всех трёх. То есть факт замены HGX-платы виден только через HGX_HWInfo_FWVersion.log, а по component/fru.txt — не виден вообще.

Что сделать

P0 — парсить log/bmc/oem-commer-log/HGX_HWInfo_FWVersion.log

  • Извлекать тройки Model/PartNumber/SerialNumber для HGX tray, HGX baseboard и каждого GPU_SXM.
  • Отдавать это отдельной сущностью инвентаря (HGX baseboard identity), не сваливая в общий FRU.

P0 — не выдавать механический карриер за идентичность GPU-платы

  • Серийник component/fru.txt Board Product : CA помечать как «mechanical carrier (vendor FRU)», а 935-26287 из HWInfo — как «NVIDIA HGX baseboard». Это разные вещи; сейчас доступна только первая, и она вводит в заблуждение.

P1 — состояние GPU vs baseboard

  • В HGX_HWInfo при погасших GPU их поля = NA (Model/PartNumber/SerialNumber = NA), но серийник baseboard при этом читается. Surface это: «baseboard отвечает, GPU не читаются» — важный диагностический признак (плата на связи, GPU-модули нет).

P2 — сравнение дампов

  • Дать возможность увидеть смену baseboard/tray/GPU-серийника между двумя дампами (детект замены платы). Сейчас единственный доступный серийник на замену не реагирует, что даёт ложноотрицательный результат.

Не ломать

  • Существующий разбор component/fru.txt — карриер/mainboard оставить, но переклассифицировать по смыслу.

Связано

  • #20 (детальный разбор onekeylog-дампов: fallback FRU/sensors, diagnose-json PCIe, component-логи) — это про тот же класс недобора данных из дампа.
## Проблема При разборе onekeylog-дампов Inspur/Kaytus (HGX B200, KR9288-X3) парсер `internal/parser/vendors/inspur/` в качестве идентичности «GPU-платы» выдаёт **только механический FRU-серийник вендора** из `component/fru.txt` (`Board Product : CA`, партномер класса `YZCA-*`). Этот серийник — **механический карриер/трей Inspur**, привязанный к шасси. При замене собственно NVIDIA HGX-платы (SXM+NVSwitch, «delta board») он **не меняется**. В итоге при анализе замены платы парсер даёт ложный вывод «плату не меняли» — серийник тот же, хотя физически стоит другая HGX-плата. ## Где лежит правильная идентичность Настоящая аппаратная идентичность HGX-узла — в **`log/bmc/oem-commer-log/HGX_HWInfo_FWVersion.log`** (Redfish HWInfo). Там тройками `Model` / `PartNumber` / `SerialNumber` перечислены: - **HGX tray** — `Model: P6612-A04`, `PartNumber: 699-26612-0000-P00` - **HGX baseboard** — `Model: NVIDIA HGX B200 8 GPU`, `PartNumber: 935-26287-00A0-000` ← это и есть «delta board» - **8× GPU** — `Model: B200 180GB HBM3e`, `PartNumber: 692-2G525-0220-501` - ссылки `@odata.id: /redfish/v1/Systems/HGX_Baseboard_0/Processors/GPU_SXM_1..8` (партномера выше — модельные NVIDIA-SKU, не инстанс-данные) ## Доказательство, что источник именно этот Три дампа одного и того же сервера (обозначу A, B, C по времени): | Источник идентичности | дамп A | дамп B | дамп C | | --- | --- | --- | --- | | Механич. карриер Inspur `CA` (`component/fru.txt`) | `<carrier-SN>` | `<carrier-SN>` | `<carrier-SN>` (тот же) | | HGX tray `699-26612` (`HGX_HWInfo`) | `<tray-SN-1>` | `<tray-SN-1>` | `<tray-SN-2>` ← другой | | HGX baseboard `935-26287` (`HGX_HWInfo`) | `<bb-SN-1>` | `<bb-SN-1>` | `<bb-SN-2>` ← другой | Оба NVIDIA-серийника (tray и baseboard) **идентичны** между A и B (интервал ~4 недели → это стабильные аппаратные ID) и **разом сменились** в C. Механический `CA`-серийник при этом одинаков во всех трёх. То есть факт замены HGX-платы виден **только** через `HGX_HWInfo_FWVersion.log`, а по `component/fru.txt` — не виден вообще. ## Что сделать ### P0 — парсить `log/bmc/oem-commer-log/HGX_HWInfo_FWVersion.log` - Извлекать тройки `Model`/`PartNumber`/`SerialNumber` для HGX tray, HGX baseboard и каждого GPU_SXM. - Отдавать это отдельной сущностью инвентаря (HGX baseboard identity), не сваливая в общий FRU. ### P0 — не выдавать механический карриер за идентичность GPU-платы - Серийник `component/fru.txt` `Board Product : CA` помечать как **«mechanical carrier (vendor FRU)»**, а `935-26287` из HWInfo — как **«NVIDIA HGX baseboard»**. Это разные вещи; сейчас доступна только первая, и она вводит в заблуждение. ### P1 — состояние GPU vs baseboard - В `HGX_HWInfo` при погасших GPU их поля = `NA` (`Model/PartNumber/SerialNumber = NA`), но серийник baseboard при этом читается. Surface это: «baseboard отвечает, GPU не читаются» — важный диагностический признак (плата на связи, GPU-модули нет). ### P2 — сравнение дампов - Дать возможность увидеть смену baseboard/tray/GPU-серийника между двумя дампами (детект замены платы). Сейчас единственный доступный серийник на замену не реагирует, что даёт ложноотрицательный результат. ## Не ломать - Существующий разбор `component/fru.txt` — карриер/mainboard оставить, но переклассифицировать по смыслу. ## Связано - #20 (детальный разбор onekeylog-дампов: fallback FRU/sensors, diagnose-json PCIe, component-логи) — это про тот же класс недобора данных из дампа.
mchus added the enhancement label 2026-07-29 10:25:33 +03:00
mchus closed this issue 2026-07-29 10:31:30 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mchus/logpile#21