记一次解决OTA死机重启bug,如何分析与解决措施?!

页面 oom Linux OTA 专辑
发布于 2025-06-12
644

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

文章主旨:

分析嵌入式设备通过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