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

news/2025/2/8 2:09:29/文章来源:https://www.cnblogs.com/yikoulinux/p/18202545

背景:

平台:stm32mp151平台

什么是OTA?

说起OTA我们应该都不陌生,它是一种可以为设备无损失升级系统的方式,能将新功能远程部署到产品上。

我们不仅可以通过网络下载OTA升级包,也可以通过下载OTA升级包到SD卡或U盘后再对设备升级。

OTA下载方式:

  • 短信方式
  • PUSH方式
  • 网络定制

本例网络定制方式。

现象描述

本产品通过OTA升级测试,升级162次,死机重启19次,如下图所示:

死机重启分析:

1. 为何oom会导致重启?

当需要申请物理页面时,首先使用快通道申请页面,当快通道申请不到将会进入慢通道,当慢通道也无法申请是将触发oom-killer,正常情况下会杀死消耗物理页面最多的进程,而设备直接进入PANIC然后重启。

当申请物理页面时free页面很多情况也会存在页面申请失败的现象,一方面可能内存外碎片化严重,另一方面可能是无法借用其他迁移类型内存。因此尽量不要使能panic_on_oom,但设备使能该参数,如下图所示:

若去掉使能选项,oom-killer将会杀掉物理页最大进程,因此应该杀死蓝牙进程,在升级过程中,杀掉蓝牙进程对业务无任何影响。下图为不开启参数而杀掉最大物理页进程:

2. 为何free页面很多但是还是会进入oom?

当前我们已经知道因/proc/sys/vm/panic_on_oom=1 导致进入oom后便会panic然后重启,但为何内存不足呢?
我们的日志提示还有126M物理页处于空闲可用,不应该会进入内存申请失败的情况。
在这里插入图片描述

细看可知gfp_mask=0x101cc0,则MIGRATE_MOVABLE未置1,导致ALLOC_CMA未置1,既不允许使用cma_pages,

在这里插入图片描述

当CMA页面不允许使用时,实际所剩余可申请的页面数:free减去free_cma,free_cma提示120多M(高达实际物理内存一半),所以剩余非迁移属性的页面只剩几M:

解决措施:

因此除了关闭panic_on_oom,还应该去查查为何free_cma为何可以分配的那么多,而不做最大值限制,通过启动日志可看出系统CMA的最大限制为128M,如下图所示:

CMA我们分配竟然达到了50%物理内存,因此将CMA降成64M大小,以释放64M用于非迁移属性页面申请。通过uboot传参cma=64M,可将cma最大值设置为64M。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709347.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

插件助手

Fitten Codevscode安装插件先注册登录智能补全问答生成代码选择代码,编辑代码Github Copilot Kite TabNine

Google Cloud Next ’24 Recap 开启 AI 新篇章,Cloud Ace 独立解决方案助力企业降本增效

北京时间 2024年4月26日,Cloud Ace 云一 受邀参与 Google Cloud Next’24 Recap 在深圳的线下活动,并设置展位。本次活动主要聚焦于 Next’24(Las Vegas)成果展示,给中国客户和开发者深入解读 Google Cloud Next ’24 大会上 Gemini、Vertex AI、BigQuery 等产品服务的重要…

感谢西部数码大佬寄的国庆礼物

事情是这样的Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 感谢西部数码大佬寄的国庆礼物 日期:2019-10-18 阿珏 谈天说地 浏览:1499次 评论:6条事情是这样的然后就这样最后就得…

借助表单拖拽设计器的优势实现流程化办公!

想要了解低代码技术平台、表单拖拽设计器的优势特点以及应用价值的客户朋友,可以在本文中探寻更多有价值的资讯。实现流程化办公,可以让企业提质、降本、增效,从而得到更多市场份额,提升市场竞争力,收获更多发展机遇。低代码技术平台在各中小企业中得到了广泛的地运用和推…

三周年活动解密游戏

首先先感谢来访和参与的小伙伴们,让 三周年活动完美结束,寄出N+1份福袋。三周年活动总共提供了两种福袋获取方式,第一种则就留了个诡异的链接...... 当你点进去的那一刻起游戏就开始了 Link start!Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此…

我喜欢二次元

我喜欢二次元,因为我喜欢那个世界Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 我喜欢二次元 日期:2019-5-20 阿珏 二次元 浏览:7250次 评论:15条我喜欢二次元,是因为我喜欢那…

Linux中查看yum安装的jdk位置

Linux中查看yum安装的jdk位置第一步which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 which java第二步获取对应的环境名文件 /etc/alternatives/java [root@192 local]# ls -lr /usr/bin/java第三步ls -lrt /etc/alternatives/java# t:将按照修改时间排序,最新的…

生活为什么总是对我动手?

睡衣出门取外卖,不想遇见熟人,偏偏被好多熟人看见;看电影时昏昏欲睡,中途上个厕所,就错过高光片段;在景区排队买票,Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 生活为什么总…

推进 OKR 目标管理落地的最佳实践

企业如何通过 Tita 推进 OKR 目标管理落地?本文将从 OKR 推进落地的四大阶段,来分别为大家介绍企业推进的全流程。这四个阶段分别是:OKR 实施准备阶段 OKR 制定阶段 OKR 执行推阶段 OKR 复盘阶段准备:OKR 实施准备阶段 OKR 实施准备阶段是开始部署和准备落地 OKR 的关键阶段…

如何优雅的提交一个表单

这是一个非常基础的HTML表单提交问题,但却是一个非常实用的技巧 我的业务场景是这样的:一个可动态创建input的表单,如下图Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 如何优雅的…

一些常见功能的查询sql

1、场景:查询一个选手的排名及距离上一名差多少票 方法二(去重排序查询比自己少的数量)Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 一些常见功能的查询sql 日期:2019-4-10 阿…