13 buhui912

尚未进行身份认证

我要认证

热爱生活,好好工作。

等级
TA的排名 5w+

一款比较强悍的存储性能分析工具(未完待续)

开发目的我这边zip解压缩和io跑分类问题经常会涉及到不同存储芯片间的存储性能对比。众所周知,存储性能问题,跟存储芯片自身性能,块设备层和文件系统层的性能都有关系的。所以说搞出一款工具,能够直观地看出某性能问题对应的在存储bsp层,块设备层和文件系统层的耗时信息,是有助于解决存储性能问题的。适用场合该工具目前比较适合用来分析单线程存储性能问题。比如zip解压缩,androbench顺序读写和sqlite跑分都是属于单线程性能问题分析范畴的。因为这些测试项目在实际进行时,只有一个线程在做性能

2020-09-16 14:24:03

f2fs文件系统相关性能优化工作

一 文件系统缺陷导致的开机慢问题1)定位原因:文件系统做cp时,如果flush quota data不成功,就会在f2fs的cp区域设置了CP_QUOTA_NEED_FSCK_FLAG这个flag。而这个flag一旦被设置,就永远清除不了,下次开机就会做耗时的quota修复工作,这样就会导致开机慢问题出现。这个开机慢原因是原生Android的行为导致的。2)解决思路:因为fsck中的quota修复工作耗时是不可避免的,很难优化。所以只能尽量避免做开机后的quota修复工作。..

2020-09-16 11:49:09

解决Linux系统死机重启稳定性方面的工作回忆(未完待续)

博泰做的工作事情:1:解决中断风暴的事情。出现中断风暴原因:1)imx6会固定把很多外设的中断绑在core 1上,里面有uart中断,usb设备中断。2)外设在中断控制器里面对应的自己设备的中断,有不同类型,有电平中断,上升沿下降沿中断等。当时usb的中断类型规定是在自己的设备服务程序起来后,必须对imx6的中断控制器发个回执信号,具体是写下usb相关的寄存器。如果不发回执信号的话,imx6的中断控制器就会误认为设备端那边没有接收到该中断,然后下来会不停的狂发中断到该该设备端的。这样就会有中

2020-09-16 11:01:12

iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call阅读笔记

韩国人的这篇ijournal论文写的非常好,可以是最近几年来,诠释文件系统日志设计思想的比较好地一篇论文。以下是我做的阅读笔记:The ext4 file system uses a physical logging scheme that records the modified blocks [14], rather than logi-cal logs, which records operations.Because several of the metadata structure.

2020-07-12 11:22:41

android内存优化那些事 --- LowmemoryKiller

概述lowmemorykiller的作用就是当内存比较紧张的时候去及时杀掉一些对用户来说不那么重要的进程,回收内存,保证手机的正常运行。安卓平台lowmemorykiller机制演进可以描述为:从早期的Kernel space Lowmemorykiller 到UserSpace Lowmemorykiller (监听vmpressure),再到UserSpace Lowmemorykiller (监听PSI)。内核空间LMKKernel LMK相关概念• /sys/module/lo.

2020-07-06 11:39:03

博泰和希望电子两家初创公司的嵌入式开发经历

1:input输入设备驱动移植共性特点:驱动层望hal层 输出input事件。1> 触摸屏驱动移植之前碰到过换了个适配器电源,触摸屏就好了。而且触摸芯片会受电磁干扰等。而且对Android系统的触摸事件往上面输入的框架顺序很熟悉,比如在hal层会到哪里。2>av接口的显示器遥控器驱动自己写了个遥控器驱动程序。不断读串口芯片,有遥控器发来的信号数据后,把它转成input事件输出到上层Android系统上。2:音频codec矽望经历:1:从无到有移植了一款sgtl50

2020-06-30 10:31:56

那些年解的疑难性能问题 --- ext4碎片整理

引子年轻时候的我们,觉得疑难问题大都是技术方面的问题。觉得自己解个疑难高深技术问题,就很了不起似的。但是随着工作经历的不断丰富,我们会发现国内IT企业搞法,光拼技术,很容易被年轻人赶上的。因为国内知名的IT公司,无不是高强度加班。因此我们得扩大自己的视野,拓宽自己的思维,从理解和把握公司的开发业务入手,在更好地吃透公司的开发业务,更好地最大化自己团队的业务价值这方面入手,才能拉开与年轻人的差距,显示大龄工程师跟年轻人相比的独特优势。所以更大地疑难,更大地挑战在于如何更好,更快地让自己的技

2020-06-11 11:02:31

那些年解的疑难性能问题 --- ext4_fsync优化

引子性能问题有时候不像稳定性问题那样,出了bug, ok, fix该bug,搞定它就行了。性能问题如果涉及到文件系统自身架构方面缺陷的话,是很难解的。不过通过解这些性能问题,使我慢慢地熟悉了文件系统工作原理和架构设计,慢慢地会发现之前看不懂的内核ext4/f2fs社区那些技术邮件交流,自己现在能全部看懂了,而且还可以跟大牛搞技术合作了。问题爆出手机操作系统设计中,对前台任务的时延要求是比较苛刻的。比如Android系统,谷歌花了大精力在优化前台任务的时延,使得用户操作手机上app时,可以无卡

2020-05-20 15:07:07

文件深度监控策略

背景 最近很多项目组报文件丢失,文件被篡改等bug单子。所以想做个文件监控方案,可以监控某些目录下面或者文件的异常操作,做到能及时找到文件异常操作的元凶和异常操作的时间点,并及时输出log日志。 这样如果推到用户那边,用户只需要定制一些监控事件,push到sdcard根目录下面,然后开启监控,就可以以后不用受开关机影响,永久的持续性的监控文件异常操作了。方案设计 这种监控方案设计时,无非需要考虑以下几点: 1:是否影响手机性能 2:通用性...

2020-05-19 11:30:00

xfstests保障文件系统稳定性

背景存储是高风险作业。一旦有文件系统相关问题后,发生内核panic,手机进入ramdump这还影响不算大。如果导致用户文件数据损坏的话,就会造成比较大的影响。以前对文件系统源码修改后,由于没有一款专门针对文件系统的测试工具,所以只跑mtbf或者kasan的话,文件系统的稳定性问题是无法被有效地发掘的。现在有了xfstests, 文件系统的稳定性方面可以得到强有力的保障。xfstests保障文件系统稳定性方面的见证:1:我这边用xfstests generic/204号case 测试And

2020-05-19 11:15:31

linux存储性能问题解决心得

背景Linux系统下的性能问题不太好解决,尤其是存储相关的问题。工作中面临这些的性能问题是比较多的,大部分是用户反馈的。为了能及时高效地解决性能问题,迫切地需要对性能问题解决方面有个系统的,深入的探索。性能问题特点性能问题跟稳定性问题相比,还是有很多自己独特的地方的。总结起来,性能问题有如下几个特点:1:性能问题的评判标准多带有主观性的稳定性问题基本上是系统出现bug了,导致某方面功能不正常。那这个肯定是必须解决的,而且评判标准也比较简单,就是解决后,该bug不会再出现了。性能.

2020-05-19 10:16:02

androbench跑分性能排查

androbench跑分对应IO特性分析在博文:手机IO workload解析里面已经指出androbench测试时,产生的IO都是direct IO。因为对手机反复androbench测试多次,根据测试log和代码分析,结论是:Android跑分测试时,direct io对应的内核路径只有__blockdev_direct_IO里面会submit 大量bio的,该路径下其他函数仅仅submit了很少量的bio,这些很少量的bio不影响跑分测试结果的.支撑上面结论的原因是: 1)...

2020-05-14 14:27:14

手机IO workload解析

背景工作中常有些这样需求,需要分析zip解压缩,androbench和应用安装等存储应用场景在不同版本,不同平台的性能差异,并且需要对这些场景做性能优化。想要做好这些需求工作,首先得对这些场景下的IO特点有所熟悉,知道这些场景会给手机施加什么样的workload。这一步做好后,对下来无论是调研存储性能优化方案,还是分析这些场景对应的性能jira都会有很大帮助的。IO workload解析解析工具介绍由于部分app代码不开源(比如androbench等),并且就算代码开源,由于上层代码

2020-05-14 13:30:08

BCC工具在手机Android系统开发方面的优势

背景还记得之前我们开发和调试内核,面对内核错综复杂的代码,还有无数条潜在的运行路径,有点茫然不知所措。之前在内核加个代码,一不小心就会造成内核崩溃。现在好了,谷歌在Android q版本上已经集成好了bcc工具。该工具的加入,对于Android手机开发方面,无论是稳定性还是性能优化工作,都有巨大的效率提升。我们发现如果会巧妙地运用该工具的话,不仅仅是内核,驾驭整个操作系统的能力会比以前有大大的提升。bcc工具介绍简介bcc全称为(BPF Compiler Collection),bc

2020-05-14 13:29:06

bcc工具上手指南

背景Android平台上,是利用adeb工具来做到bcc工具在Android系统上的快速部署。一旦bcc工具在Android系统上部署完毕,我们就会很方便地利用现有的ebpf工具,进行系统开发或者调试。另外,也可以在部署好的bcc环境里面,做自己的ebpf工具定制开发。adeb简介adeb主页:https://github.com/joelagnel/adebbcc工具主页:https://github.com/iovisor/bccadeb又名androdeb, 它在Android

2020-05-14 13:26:49

linux系统单线程工作耗时性能解析

背景工作中常常要解决大量的Linux系统下的性能问题。这些性能问题要想高效分析解决好,其中一个基础是要对单线程工作性能有个详细完善地分析思路,能部署一个详细地性能检查check list。单线程性能影响因素分析拿手机上用户执行zip解压缩操作为例,具体做zip解压缩工作的正好是文件管理器app的AsyncTask线程。该线程的工作耗时性能直接关系到手机解压缩的性能好坏。而该线程的工作耗时分为oncputime + offcputime, 具体工作性能会受cpu ,内存和存储3大模块的影响,进

2020-05-14 13:22:51

手机Android存储性能优化架构分析

引子自己做单机存储性能优化工作已经一年多了,平时组内做的优化点需要系统总结一下了。毕竟手机存储跟分布式存储,大数据存储还有一定差别的。怎么能够找到手机存储性能优化方面的技术特性,怎么去凸显手机存储里面碰到的独特性能优化问题,有了这些需求,所以我需要写一点东西了。因为工作繁忙,只好写成了类似bbs和笔记的风格,不过虽然这样,我保证下面文字是我对手机存储性能架构方面的原创心得,网上根本搜...

2019-12-26 12:56:06

MMU,cache,裸机嵌入式C编程还有带操作系统的编程

通过CMSIS-utrealos项目中的CTBUG调试,使我对裸机C编程加深了认识。那个BUG调试,现象是出现hard fault,但是fault出现地的汇编指令看着貌似没啥问题,解决一处的fault后,其他处又出现fault了。最后我看到原来是fault出现地的指令中源地址错误了,源地址应该在数据段中,却意外地落到了代码段中。这个现象我忙活了半天才找到。然后通过看那奇怪的源地址,对照它四周的

2013-11-26 15:23:41

armcm3权威指南笔记----arm编程中地址未对齐方面的影响

P152当使用C开发程序时,推荐开启CM3的双字对齐管理机制(在NVIC配置与控制寄存器中,把STKALIGN置位),代码形如:#define NVIC_CCR ((volatile unsigned long *)(0xE000ED14)) *NVIC_CCR = *NVIC_CCR | 0x200; //设置STKALIGN位STKALIGN 的名词解释P306在响应异常的

2013-11-21 15:15:47

嵌入式编程复杂性

搜索关键词:嵌入式编程 无MMU 调试复杂嵌入式往往没有操作系统支撑,或者因为有操作系统支撑,但因为种种的限制,操作系统提供的功能少得可怜。所以,很多代码不能像PC编程那样天马行空,任意驰骋。今天就聊聊内存分配的问题,内存碎片,可能大家都不陌生。然而在嵌入式系统里,最怕的就是内存碎片,也是系统稳定的头号杀手。我曾经做了一个项目,系统中有很多的malloc和free,尺寸不一,从60多个字节

2013-11-18 13:12:27

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。