【微知】Mellanox驱动报错pdevice‘s health compromised - reached miss count机制分析(timer+check+recover+trigger)

背景

Mellanox网卡在服务器上CPU与网卡通过PCIe连接,软件上HOST是内核态驱动,NIC上是Firmware(FW)程序。HOST上通过类似“心跳机制”来确保FW还在正常工作,这个机制就是poll_health。本文以一个FW报错为例子介绍这个机制

health机制

为了确认固件(FW)的健康状态,iseg(初始化段)中暴露了一个健康计数器、综合症(syndrome)以及一个包含高级调试信息的相关缓冲区。iseg分析参考:Mellanox驱动中的iseg是什么?如何指定哪些PCIe设备绑定到驱动?
健康计数器每10毫秒由固件(FW)递增一次,并由软件(SW)进行监控。它应该由一个独立的线程进行监控,该线程不会因等待命令完成而阻塞。如果计数器未能递增,则表明系统健康状态不佳,

报错

报错:poll_health:834:(pid 0): device’s health compromised - reached miss count
详细报错信息:
在这里插入图片描述
可以看到这个错误是由于网卡温度过高。实际情况是服务器的风扇开启不足,造成BF2 DPU温度过高从而触发这个机制。触发机制是:health模块每隔2秒检查一次FW的状态,如果有异常通过print_health_info打印信息。打印的信息内容是硬件寄存器中的信息。详细参考health buffer章节

检查机制

网卡驱动在初始化的时候会启动一个定时器timer,每个2秒调用poll_health函数。该函数被回调后检查固件的信息。然后根据情况做出响应动作。

内核定时器机制触发定期检查

u64 poll_interval_ms =  mlx5_tout_ms(dev, HEALTH_POLL_INTERVAL); #这里定义下次到期时间的定义 最终是2000ms

struct mlx5_core_health *health =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值