记一次解决OTA死机重启bug,如何分析与解决措施?!
背景:
平台: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。


记一次解决OTA死机重启bug,如何分析与解决措施?!的更多相关文章
- win7蓝屏死机0x0000003B错误蓝屏故障解决
win7蓝屏死机0x0000003B错误蓝屏故障解决 刚才一个朋友问我:电脑蓝屏了怎么办. 我问他要了电脑的截图,自己看了错误代码:0x0000003B 搜索资料,查询了一番.都是说电脑中病毒或者是系 ...
- Ubuntu 图形桌面死机重启(机器不重启)
Ubuntu的图形界面容易死机,如果正在跑程序的话又不能重启.这时候可以通过终端来_重启_图形界面. 首先按Alt+Ctrl+F1进入终端界面.查看图形界面的进程: ps -t tty7 查看到名为X ...
- openstack环境-解决windows虚机重启后比当前时间晚8小时问题
背景: 生产环境下,发现windows虚机每次重启,时间都会倒退到虚机的格林威治时间(+8小时才是北京时间),也就是比当前时间晚8小时.测试发现,windows虚机所用的镜像,缺少了一个os_type ...
- loadrunner解决浏览器死机问题
初次接触loadrunner时,遇到很多问题.浏览器崩溃以及录不到脚本就折磨了一周时间.最后终于解决 一.浏览器崩溃问题 1.退出安全卫士和防火墙 2.去掉IE第三方扩展.工具-Internet选项- ...
- selenium+phantomjs报错:Unable to find a free port的分析和解决
selenium+phantomjs报错:Unable to find a free port的分析和解决 Table of Contents 1. 现象 2. 分析 3. 解决办法 1 现象 在做项 ...
- php-fpm死机解决办法,脚本后台自动重启
本人用nginx+php7搭建了一台服务器,因为请求量太大,而且php里面又有挂起的任务,导致php-fpm在高峰期的时候经常死掉,吧php-fpm的最大进程数已经改到1000了,还是吃不消,cpu也 ...
- Ubuntu死机解决方法汇总
为什么不建议强制关机 如果长按电源按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道! 其实, 大部分时候的死机是假死, 不是真死... 有时候鼠标还能动呢. 还有一个原因: 对于平时忠贞不二 ...
- [vmware]另类解决vmware关闭win10死机或蓝屏问题
升级win10后在使用虚拟机发生一个问题,本人的win10版本为win10 9879, 在使用vmware时,当关机会整个系统死机,在网上搜索后发现这是由于win10内核升级导致vmware不兼容,最 ...
- linux死机解决办法
linux死机后不要长按电源建强制关机,容易对损坏系统配置或者电脑硬件,导致重启后产生不必要的麻烦 如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,解决方法如下: 1.一种方式是进入终端界面 ...
- 解决Oracle+weblogic系统死机的问题
前段时间发布的系统(Oracle+weblogic)频繁挂掉,每天早上9点.下午2点高峰期就挂,纠结了很长时间,最终解决,方法描述下. 执行select count(*),status from v$ ...
随机推荐
- 【论文阅读】RAL2022: Make it Dense: Self-Supervised Geometric Scan Completion of Sparse 3D LiDAR Scans in Large Outdoor Environments
0. 参考与前言 论文链接:https://ieeexplore.ieee.org/document/9812507 代码链接:https://github.com/PRBonn/make_it_de ...
- Simple WPF: WPF 自定义按钮外形
最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园. WPF的按钮提供了Template模板,可以通过修改Template模板中的内容对按钮的样式进行自定义,完整代码Github自取. ...
- python使用flask框架生成excle返回前端(包含图片、表格、表头灰色、表格加边框)
python使用flask框架生成excle文档,文档中包含图片和表格,其中表格要包含图片.表格.表头灰色.表格加边框,照片和表格不重叠. 逻辑:获得图片的高度,根据高度计算表格从第几行开始插入. 效 ...
- HTTP 和 HTTPS,为什么HTTPS安全?
HTTP协议通常承载与 TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS 默认HTTP的端口号为80,HTTPS的端口号为443 因为网 ...
- input标签 只能输入纯数字
<input type="number" pattern="number" onkeyup="value=value.replace(/[^\d ...
- 洛谷P1365
WJMZBMR打osu! / Easy 题目背景 原 维护队列 参见 P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 ...
- 强烈推荐:18.3k star,推荐一款简单易用的HTTP请求流量录制回放工具:Goreplay
在软件开发和测试过程中,我们经常需要对应用程序的网络请求进行录制和回放,以便进行性能分析.压力测试或者模拟复杂的网络环境.今天,我要向大家推荐一款简单易用的 HTTP 请求流量录制回放工具:Gorep ...
- Javascript 转Date对象为字符串实现函数
转Date对象为字符串实现函数 function formatDate(time, format = "Y-MM-dd HH:mm:ss") { /** 格式化字符说明 Y 年 四 ...
- python lambda 三元表达式
python lambda 三元表达式 python中的lambda函数用法 通常定义的函数 def sum(x,y): return x+y print(sum(4,6)) 用lambda来实现: ...
- win10安装和使用wireshark
win10安装和使用wiresharkhttps://blog.csdn.net/qq_34732729/article/details/105126146https://blog.csdn.net/ ...