嵌入式os稳定性工作总结

嵌入式os稳定性工作总结

前言

最近对稳定性工作慢慢积累经验丰富了,想对这个嵌入式行业我的os稳定性工作做个梳理总结。

还是那句话,我喜欢把握整体业务和架构特点,从这方面入手比较好。

os稳定性工作价值体现

1 单元测试阶段体现不了,集成测试阶段才会有

因为产品的集成测试阶段,不再是各个子模块的单元测试了,这个时候关注的是整个os的系统稳定性。

单元测试阶段,其实有bug,各个子模块工程师很容易找出原因,不需要借助什么os稳定性分析工具。

但是集成测试阶段,各个子模块如果出问题,因为被厚厚的os层包裹着,并且各个模块耦合交织在一起,所以这个时候就需要体现os稳定性工程师的价值了。

举个例子:

比如手机平板之类的嵌入式公司,里面分成触控显示,多媒体组,usb/网口外设组等多个项目组。

如果是各个模块的单元测试阶段,每个项目组各自测试各自的模块,如果有bug,就在自己模块里面,很容易看出来的。

这个时候不需要什么os稳定性分析工具,比如linux下面的分析内核崩溃的kdump+crash工具,还有ftrace,bcc等高级稳定性分析工具也不需要太多。

当然了,稳定性工程师也可以做些效率提升工作,告诉各个项目组,多用些linux下面一些稳定性分析工具,有助于提升bug解决效率。

但是至少这个阶段,不会体现os稳定性工程师的痛点价值需求。

2 demo阶段也体现不了太多价值,作成产品量产交付阶段和售后服务阶段才会体现价值

嵌入式行业,很多特别是小公司,没有好的产品销售思路和渠道,没有优质客户,所以很多时候是在搞demo或者只能小批量的出货,也就是所谓的demo厂。

这个时候也体现不了太多稳定性工作价值。

因为搞demo或者产品出货量小时,也不会有太多或者复杂难解os稳定性问题存在。这些公司很多时候是在搞产品的功能集成和驱动自身稳定性。

只有量产阶段(大批量出货),集成化测试才能体现意义,然后稳定性工作就来了。

举个例子:

手机快量产阶段,小米有mtbf压力测试,有成熟的自动化测试脚本,每天几百台手机在压测,还有独立的测试组,雇佣大量人员给研发提稳定性bug。

而且手机软件开发版和稳定版是分开的,开发版多是小米内测手机用户会用,一些比较前沿或者激进点的手机功能开发,会先进开发版,这个时候还会再发现一些稳定性bug。

所以大厂对产品稳定性质量把关测试,还是有很多值得学习的。

还有售后服务阶段,像小米手机出货量大时,一年几亿部,手机售后软件故障处理是很忙的。

为了保住用户群体那边的口碑,大厂在这方面做了用户手机稳定性问题方面的大数据跟踪,

这样可以提前收集一些特定用户机型方面的稳定性问题特征,在用户反馈问题或者稳定性问题大规模爆发之前,就可以提前解决该问题。

3 总结:

os稳定性工作是和系统的整体表现相关的,产品的集成化测试阶段,大批量的生产交付和售后故障处理阶段,os稳定性工作才能显示出痛点价值。

所以还要去大厂,才能真正学到os稳定性工作价值。

os稳定性工作总结

小米和后来我呆的这家芯片公司,我做的稳定性工作价值还是需要梳理总结下。

1 效率提升

目标是提升问题分析解决效率。

linux下面有很多丰富的稳定性问题分析工具,比如ftrace, kprobe, bcc,perf等。这些工具充分利用起来后,

其实是可以不需要在内核里面加任何printk类似打印调试语句的,这样加打印语句,重编内核再调试也麻烦耗时。

而且动态修改内核时,也可以借助上面提的工具。

总之,稳定性工程师可以利用这些工具,在公司内部推广,提升驱动工程师解决问题效率。

我之前推广后,驱动工程师工作效率比以前至少提升了一倍多。

2 降低研发成本

芯片公司需要用到trace32调试工具,不过trace32的独特价值是体现在它解决芯片总线hung死或者cpu彻底死掉等难解硬件问题上。

很多os软件问题不需要用到trace32。

我所在的芯片公司,很多内核或者驱动问题的定位,还需要借助trace32,这样公司的trace32数量就不够用了。

我开发了arm64上self-hosted调试工具: kdb/kgdb,可以一定程序上代替trace32来做稳定性问题定位。

3 稳定性工作具体内容

1)死机崩溃问题解决

需要对os异常这块有所熟悉,对arm64体系架构异常这部分有所熟悉,知道来个异常,怎么区分是cpu取指错误(通常是非法指令或者未定义指令,可能是ddr错误),

还是mmu错误(这个通常是软件错误,和前面取指错误一样都是同步精确异常),还是外部硬件错误(这个通常是外部事件产生的异步异常,就是非精确异常了)。

如果是mmu类型的异常错误,还得有栈回溯推导这一基本技能,会从崩溃task栈上提取有用信息。

2)内存和存储之类问题。

内存方面通常是内存泄漏,内存踩踏。存储方面通常是文件丢失,文件损坏,文件系统挂载出问题等。

相关推荐
LCD液晶屏16 分钟前
京瓷液晶屏停产替代:杭州立煌科技工业 LCD 解决方案
android·科技
2501_932750262 小时前
Android 自定义 View 入门
android
gwf2163 小时前
企业级SSD双端口与高可用架构深度解析(Dual Port / Multipath / ALUA / Active-Active)
linux内核·高可用·存储技术·多路径·企业级ssd·双端口·alua
事圆则缓4 小时前
Android 开启线程的几种方式:Thread、线程池、HandlerThread 与协程
android
番茄灭世神7 小时前
PN学堂GD32教程第11篇——I2C与EEPROM
c语言·stm32·单片机·嵌入式·gd32
haliu9 小时前
【FHE 同态加密】我们如何实现同态加密推理(十六):未完成清单与已知边界(同态加密推理的精度、性能与安全)
人工智能·嵌入式·c·fhe·推理引擎·c11·边缘推理·同态加密推理
半摆烂日常18 小时前
低代码平台API对接实践:接口鉴权与数据同步的完整实现
android·低代码·rxjava
事圆则缓19 小时前
volatile 使用场景全解析:它能保证什么,又解决不了什么
android
蒲公英内测分发20 小时前
智能投影仪参加海外展会,未上架的 Android 配套 App 怎么让客户限时试用?
android
ii_best20 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵