人生总是有些意外和偶然的事情发生,就像电影霍比特人1中一样,一个偶然的晚上拜访和聚会,就让几个霍比特人在甘道夫的带领下,开启了他们的意外探险之旅。
我也是这样巧合,当时已经工作快7年的我,还沉浸在嵌入式bsp开发温暖梦乡中时,突然一个意外的大厂offer打乱我的生活节奏,不过我没有甘道夫带领,全凭我之前南大富士通时的内核功底,
还有多年的操作系统底层开发工作经验相陪,就这样误打误撞地开启了我的大厂os性能优化这个探险旅行。
我进这个大厂之前根本没搞过os优化, 不过我喜欢探险,喜欢探索未知世界,就这样在大厂一路打怪升级,期间遇到了不少坎坷,也曾灰心丧气过,不过终于坚持下来了。最后到现在,历经快4年时间,终于在中土世界里os优化这个职业领域方面站稳了脚跟。
重要的是我会把我在中土世界里发现的美好景观和我的技术探险经历分享给大家。
一 文件系统/io优化:
一开始我做的是这个方向。由于大厂有明确细致的职责分工,规范的开发流程,所以我能有时间在这个领域钻研技术,改进我们的产品质量。
1:深入调查一些io测试case在不同软硬件平台上的性能差异原因
2:部署os性能优化专项方案
3:总结和梳理手机存储性能优化架构
手机Android存储性能优化架构分析
二 内存优化
嵌入式产品中(比如车载设备,手机等)有个明显地特点就是内存和存储空间有限,注重单机操作性能。比如手机现在最高端的旗舰机内存也只有12G,外存256G,这跟互联网那些分布式系统相比,存储容量是少了很多(更不用说一些低端手机只有2-4G的内存)。
互联网行业对系统优化要求是比较看重稳定性,还有分布式, 网络传输效果。
而嵌入式行业对产品最看重的就是单机操作系统的表现。
需要着重指出的是互联网行业的公司可能对os性能优化不是很重视,因为性能差。我可以再多加块内存和存储设备,这些买设备的钱开销, 其实和跟投入研发人力长期耗在性能优化工作上相比,要少多了。所以互联网公司更重视的是稳定性工作,比如操作系统死机崩溃等问题解决和优化。
而嵌入式产品,比如手机都是大批量地生产销售,单台设备存储容量都固定死了,都很有限。而现在随着5G时代地到来,android系统的app种类,多媒体渲染效果等都比以前强了不少,而这些都需要耗内存的。所以嵌入式产品中会经常出现因内存不足,内存碎片化而导致的用户那边系统操作性能退化,所以嵌入式行业大厂会更加关注单机os性能优化工作。
我在这方面的知识积累和工作内容:
1:嵌入式系统中各个模块都在耗内存,很容易出现可用内存不足,导致系统性能出问题,这方面优化工作有
android内存优化那些事 --- LowmemoryKiller
2:内存碎片化也会导致出性能问题。
3:内核的内存回收并不那么完美,缺陷很多。
三 性能分析工具优化
性能问题和稳定性问题相比,有些鲜明的特点:
横向上是容易受系统各方面因素的影响,系统中各个模块都会直接或者间接地施加影响,具体通过消耗系统cpu, io和内存三大块资源来影响,从而最终导致你所关注的性能问题产生。
纵向上就是解性能问题需要的技术栈是很深的,比如存储方面的性能问题:io跑分性能差,需要你从用户态io接口使用,一直熟悉到底层内核内存和io交互,文件系统,块设备层,再熟悉到存储硬件bsp层工作原理等,这个技术栈掌握深入了,才能深入理解io性能问题产生原因以及做出相应的优化。
所以性能问题比稳定性问题更难看清原因,更难优化,所以迫切需要各种分析工具地加入,提升解决问题效率。
四:os性能工作总结