HWMON 部署、调试、监控与安全建议
1. 枚举
1 | for h in /sys/class/hwmon/hwmon*; do |
2. lm-sensors
1 | sensors |
嵌入式 DT 平台不要无差别运行 sensors-detect --auto;它会探测 I2C地址,某些非 sensor设备不安全。优先使用原理图和 DTS。
3. 分层排障
1 | 没有 hwmonN |
4. 动态调试
1 | mount -t debugfs none /sys/kernel/debug |
也可针对具体 sensor、PMBus core、I2C core。高频日志会改变时序并占用存储。
5. Trace
1 | echo 1 > /sys/kernel/debug/tracing/events/hwmon/enable |
用于定位高频 poll、write来源和延迟。生产环境设置频率限制。
6. Poll interval
监控周期不应远小于 sensor conversion/update interval。典型板级健康监控 1–5 秒已足够;过密读取增加总线、功耗和锁竞争,数据却不更新。
7. 告警
不要只依赖轮询:
- 配置 hardware threshold;
- 使用 alarm IRQ/uevent(若驱动支持);
- 与 thermal critical trip配合;
- daemon设置 debounce/hysteresis;
- 记录 sensor read failure。
8. 权限
只读 sensor可开放给普通监控用户;以下应限制:
- PWM;
- threshold;
- update interval;
- power cap;
- reset history;
- chip-specific control。
错误写值可能停风扇、屏蔽 alarm或造成热损坏。使用 udev group和最小权限,不要全局 chmod 666。
9. 容器
不应把整个 /sys 可写挂载给容器。若需监控:
- host exporter采集;
- 只读代理;
- 精确 bind mount;
- 禁止直接写 PWM/threshold。
10. 稳定性
- 不写死 hwmonN;
- 数据附带 timestamp和 sensor identity;
- 标记 stale/invalid;
- 对突变做物理范围验证但保留原始错误;
- 监控 fan command 与 fan RPM 一致性;
- 做环境温度、高低负载和 suspend/resume测试。
11. RK3588 建议
- SoC 热保护以 thermal zone/trip 为主;
- hwmon用于外部 sensor和 fan可观测性;
- 明确 generic thermal 与 Rockchip notifier 的 fan控制权;
- 产品最终镜像检查
SENSORS_PWM_FAN; - 编解码压力测试同时记录 CPU/GPU/NPU devfreq、温度、PWM/RPM和 throttling。
正在加载留言…