请问watchdog怎么定制

// 此模板仅供参考,如果不适用可以修改

问题描述

如果BMC OS发生system deadlock或kernel panic,watchdog开始计时:
在boot阶段,watchdog timeout为10分钟;
在runtime阶段,watchdog timeout为2分钟;
timeout动作为reset full BMC chip。

请问watchdog怎么定制?

答案内容由AI生成,仅供参考:

watchdog定制配置方案

根据您的需求,若需定制BMC OS的watchdog行为(在system deadlock或kernel panic时触发,并在不同阶段设置不同超时时间,最终执行全芯片复位),以下是详细的定制方案。


需求分析

您提出的需求包含以下关键点:

  1. 触发条件:BMC OS发生system deadlockkernel panic
  2. 超时时间:
    • Boot阶段:watchdog timeout为10分钟(600秒)。
    • Runtime阶段:watchdog timeout为2分钟(120秒)。
  3. 超时动作:reset full BMC chip(即硬件级复位)。

该机制本质上是利用BMC OS Watchdog(也称OS看门狗)实现对操作系统的健康监测,并在异常时执行强制恢复。


watchdog工作机制概述

1. BMC OS Watchdog 简介

  • 是由BMC管理的硬件看门狗定时器。
  • 依赖操作系统周期性地发送“喂狗”信号(reset watchdog timer)以表明系统正常运行。
  • 若未能按时喂狗(如发生kernel panic、死锁等),watchdog将超时并触发预设动作,如硬复位。

:warning: 来自知识库支持:

  • 实体 BMC OS Watchdog 描述:“BMC OS Watchdog is a hardware or firmware-based mechanism designed to monitor the operating system for responsiveness and trigger a reset if the OS fails to respond.”
  • 关系 BMC OS Watchdog → Hard Reset“If the BMC OS Watchdog is not fed by the OS, it results in a Hard Reset to recover the system.”

定制实现方法

:white_check_mark: 方法一:使用 IPMI 命令配置 Watchdog Timer(推荐)

通过标准IPMI命令 Set Watchdog Timer 进行配置,可灵活设置不同阶段的行为。

命令格式(参考Document Chunk 4)

ipmitool raw 0x06 0x24 [byte1] [byte2] [byte3] [byte4] [byte5] [byte6]

参数说明

字节 含义 推荐值(本例)
1 Timer Use 0x03 (OS Load)
2 Timer Actions 0x01 → Bit[2:0]=001b = Hard Reset
3 Pre-timeout interval (seconds) 0(无预警)
4 Timer flags clear 0x08(清除OS Load标志)
5 Initial countdown value (lsbyte, 100ms/count) 根据阶段设定
6 Initial countdown value (msbyte) 根据阶段设定

阶段配置示例

阶段 Timeout 初始值计算 命令示例
Boot阶段 10 min = 600s 600s / 0.1s = 6000 → 0x1770 → LSB=0x70, MSB=0x17 ipmitool raw 0x06 0x24 0x03 0x01 0x00 0x08 0x70 0x17
Runtime阶段 2 min = 120s 120s / 0.1s = 1200 → 0x4B0 → LSB=0xB0, MSB=0x04 ipmitool raw 0x06 0x24 0x03 0x01 0x00 0x08 0xB0 0x04

:white_check_mark: 建议策略:

  • 在系统启动完成后,由初始化脚本自动切换至Runtime配置。
  • 可通过内核模块或守护进程(如 watchdog 服务)动态调整。

:white_check_mark: 方法二:通过 BIOS/UEFI 设置(仅基础启用)

虽然不能动态调整timeout值,但可通过BIOS开启OS Watchdog功能。

操作路径(参考Document Chunk 1)

  • 进入 BIOS Setup
  • 找到:
    BMC Configuration →
        OS Watchdog → <Enable>
        OS Watchdog Timeout Time → [5] (单位:分钟)
    

:red_exclamation_mark:注意:BIOS设置通常为静态值(如5分钟),无法满足您分阶段定制的需求,建议结合IPMI方式使用。


:white_check_mark: 方法三:配置 Linux watchdog 服务(自动化喂狗 + 定制超时)

在BMC OS侧部署标准 watchdog 守护进程,实现精准控制。

步骤如下:

  1. 安装 watchdog 包
sudo yum install watchdog
# 或
sudo apt install watchdog
  1. 加载 IPMI watchdog 模块
    编辑 /etc/modules/etc/modprobe.d/ipmi.conf
ipmi_devintf
ipmi_si
ipmi_watchdog
  1. 配置 /etc/watchdog.conf
watchdog-device = /dev/watchdog
watchdog-timeout = 120     # Runtime阶段:2分钟
realtime = yes
priority = 1
interface = ipmi           # 使用IPMI接口通信
# 可选监控项
max-load-1 = 24
memory-margin = 64
  1. 启动服务
sudo systemctl enable watchdog
sudo systemctl start watchdog

:counterclockwise_arrows_button: 动态切换机制建议:

  • 编写启动脚本,在系统初始化后期重新发送IPMI命令设置为120秒
  • 使用udev规则或systemd service检测系统状态,动态调用 ipmitool mc watchdog set

验证与调试

1. 查询当前watchdog状态

ipmitool mc watchdog get

预期输出(示例):

Timer Running: yes
Timeout Action: Hard Reset

2. 查看日志确认行为

  • BMC串口日志:观察是否有 The OS is forcibly reset due to the watchdog(OS Load) timeout. 记录。
  • 日志文件:/var/log/watchdog.log

3. 手动触发喂狗测试

ipmitool mc watchdog reset

注意事项与限制

项目 说明
复位类型 reset full BMC chip 实际等同于 Hard Reset,即断电再通电或通过复位信号重置整个芯片。
超时精度 IPMI watchdog 以100ms为单位计时,设置值需换算为100ms的倍数。
独立运行 watchdog在BMC中独立运行,即使OS卡死仍能生效。
固件依赖 需确保BMC固件支持IPMI v1.5及以上版本,并启用了OS Load timer use模式。

参考资料

  • IPMI Specification v2.0(标准依据)
  • openUBMC社区文档https://discuss.openubmc.cn
  • Set Watchdog Timer 命令详情(Document Chunk 4)
  • 银河麒麟V10 + OpenUBMC2512环境适配案例(Document Chunk 1)

总结

需求 是否可实现 实现方式
Boot阶段 timeout 10分钟 :white_check_mark: 使用 ipmitool raw 0x06 0x24 ... 配置600秒
Runtime阶段 timeout 2分钟 :white_check_mark: 系统启动后用脚本更改timeout为120秒
timeout动作为reset full BMC chip :white_check_mark: 设置Timer Action为Hard Reset即可
响应system deadlock/kernel panic :white_check_mark: 由watchdog自动检测,无需OS参与

:white_check_mark: 推荐最终方案
结合 IPMI命令初始化 + Linux watchdog服务 + 启动后动态切换机制,实现全生命周期、分阶段精准控制。

如有进一步需求(如结合 maca 服务进行监控回调),可扩展脚本集成至BMC启动流程。

相关链接:

  1. BIOS setup设置启用BMC OS看门狗后,OS循环重启
  2. 2506版本release包升级回退
  3. 有没有关闭bmc看门狗的方法
  4. 目录 | 文档中心 | openUBMC
  5. 固件升级机制及常见问题 | 文档中心 | openUBMC

当前BMC管理芯片的看门狗超时间尚不支持定制,固定为150s超时

有定制诉求,可以通过社区sig组提交需求,开放定制能力

定制的话涉及到哪个闭源组件,组件名叫什么?

openubmc的看门狗是由maca组件进行管理,但具体的超时时间是由sdk定义的。