记一次解决OTA死机重启bug,如何分析与解决措施?!
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
一口Linux
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨:
分析嵌入式设备通过OTA升级时出现的死机重启问题,并提出优化解决方案。
关键要点:
- OTA是一种通过网络或外部存储设备无损升级系统的方式,支持远程部署新功能。
- 设备在162次OTA升级测试中出现19次死机重启,主要与内存管理参数配置有关。
- 死机重启原因包括:启用 panic_on_oom 参数导致设备直接进入 PANIC;内存碎片化和 CMA 页面配置问题导致内存申请失败。
- 解决措施包括:关闭 panic_on_oom 参数、优化 CMA 页面最大值限制,通过 uboot 降低 CMA 分配到 64M。
- 调整系统配置后可减少死机重启现象,提高系统稳定性。
内容结构:
- 背景介绍:简述OTA的用途及升级方式,包括网络下载和通过外部存储设备升级。
- 现象描述:介绍设备在测试中的表现,包括死机重启次数及相关测试数据。
- 问题分析:
- oom触发重启:由于 panic_on_oom 参数启用,设备出现 PANIC 后直接重启。
- free 页面异常:日志显示剩余物理页面充足,但内存申请仍失败,原因是 CMA 页面配置问题导致剩余页面不可用。
- 解决措施:
- 关闭 panic_on_oom 参数,让 oom-killer 杀死占用内存最多的进程。
- 调整 CMA 最大值限制,通过 uboot 设置参数将 CMA 降至 64M,释放更多内存供非迁移属性页面使用。
文章总结:
本文通过分析嵌入式设备在OTA升级中出现的内存问题,提出针对性优化措施,为提高系统稳定性提供了实践参考。
一口Linux
一口Linux
扫码关注公众号