开发目的

我这边zip解压缩和io跑分类问题经常会涉及到不同存储芯片间的存储性能对比。
众所周知,存储性能问题,跟存储芯片自身性能,块设备层和文件系统层的性能都有关系的。所以说搞出一款工具,能够直观地看出
某性能问题对应的在存储bsp层,块设备层和文件系统层的耗时信息,是有助于解决存储性能问题的。

适用场合

该工具目前比较适合用来分析单线程存储性能问题。
比如zip解压缩,androbench顺序读写和sqlite跑分都是属于单线程性能问题分析范畴的。因为这些测试项目在实际进行时,只有一个线程在做性能测试工作,最后输出的性能指标只跟该线程的性能有关。

使用介绍

1 搭建bcc环境

参考之前的博文:bcc工具上手指南,搭建好测试手机的bcc开发环境。

2 获取存储性能分析工具

从http://gerrit.pt.mioffice.cn/#/c/XXX上 把工具:ioworkload_analysis.py 和 ioworkload_analysis_not_included_blk​.py下载到本地,然后adb push 到手机的/data/androdeb/debian目录里面,并对它们chmod 777一下。

3 开启性能trace

执行 下面命令,开启存储性能trace。
adeb shell
./ioworkload_analysis.py 0 > /data/io.log

4 开始性能测试

开始跑性能测试(比如上面的zip解压缩和IO跑分),
 跑完性能测试后,把上面生成的手机里面的/data/io.log文件adb pull到电脑端, 产生的文件系统层,块设备层和bsp层的存储性能耗时信息都在上面的io.log文件里面。

5 分析存储各层面的性能耗时

拿androbench跑分性能分析举例,来说明怎么得到在bsp层,块设备层和文件系统层的耗时信息。(androbench跑分性能跟Thread-xxx这个线程的工作性能挂钩的)

1> 文件系统层

cat io.log | grep Thread- | grep VFS | awk '{sum += $8};END {print sum}'

可以得到文件系统层面的总耗时信息

cat io.log | grep Thread- | {grep " N ",grep " W ",grep " R "} | wc -l

可以得到文件系统层总共发送了多少fsync or write or read系统调用数目。

2> 存储bsp层

cat io.log | grep Thread- | grep REQ | awk '{sum += $8};END {print sum}'
可以得到跑分时发出的块设备层所有请求完成(req issue到req complete)总耗时信息。

cat io.log | grep Thread- | grep REQ | wc -l
可以得到跑分时发出的请求总数目。

请求完成的平均耗时 = 所有请求的总耗时 / 上面的总数目.
请求完成的最大耗时和耗时分布可由sort -nr命令得出。

上面信息便代表了存储bsp层的耗时信息。

3> 块设备层

cat io.log | grep Thread- | grep REQ | awk '{sum += $6};END {print sum}'
得到了IO跑分时的块设备层的请求排队耗时(req insert到req issue)信息。

cat io.log | grep Thread- | grep BLK | awk '{sum += $8};END {print sum}'
可以得到IO跑分时的块设备层submit bio的总耗时。

cat io.log | grep Thread- | grep BLK | wc -l
得到跑分时的submit_bio调用次数。

上面信息便代表了块设备层的耗时信息。

因为块设备层的耗时有两方面的耗时组成,一个是submit_bio的耗时,一个是请求排队耗时。

目前应用成果

目前正在应用该工具解决IO跑分和zip解压缩中不同存储芯片对比的性能问题。
已经能够成功看出jira:MIUI-1826523里面的q版本sliqte性能衰退问题是由于文件系统层fsync性能不如p版本造成的,
存储bsp层和块设备层q版本的性能还好于p版本的。(该jira还在进一步地分析定位中)

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

  1. Kernel i2c gpio spi pinctrl platform 分析讲解 (未完待续)

    前言 linux kernel 作为最常用的 驱动管理平台 其中 最常见的就是 i2c spi gpio pinctrl platform 总线平台的使用 硬件的时序的设计,一般都不会太 格路子的,处 ...

  2. 京东html5游戏,京东H5直接打开app的代码分析(未完待续)

    (function(){ // 判断浏览器 var Navigator = navigator.userAgent; var ifChrome = Navigator.match(/Chrome/i) ...

  3. 基本卷-动态卷性能测评(未完待续)

    320G 同一磁盘复制1G 1个文件 //基本磁盘 27秒 FastCopy 1.62 128M缓存 37秒 Windows自带复制 //动态卷 15秒 Windows自带复制 27秒 FastCop ...

  4. (转)超全整理!Linux性能分析工具汇总合集

    原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...

  5. java 对比工具_Java几款性能分析工具的对比

    在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题.理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程 ...

  6. Java几款性能分析工具的对比

    在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题.理论上,增加对应用程序的负载会使性能等比率的下降.然而,我认为性能下降的比率远远高于负载的增加.我也发现,性能可以通过改变应用程序的逻 ...

  7. 5款Java性能分析工具的对比

    在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题.理论上,增加对应用程序的负载会使性能等比率的下降.然而,我认为性能下降的比率远远高于负载的增加.我也发现,性能可以通过改变应用程序的逻 ...

  8. Linux常用性能分析工具汇总

    文章目录 性能分析工具 top pstree mpstat vmstat pidstat perf proc tcpdump bcc工具箱 cachestat cachetop memleak fil ...

  9. 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

    如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...

最新文章

  1. mycat快速体验(转)
  2. jQuery之表格变色
  3. mysql auto position_MHA-Failover(GTID,Auto_Position=0)
  4. 用户操作-登录流程分析
  5. Jquery Dialog 详解(正在学习jquery,详解转载)
  6. Carthage 安装与使用
  7. 哔哩哔哩HLB站缓存合并电脑版链接:https://wwa.lanzoui.com/b016vmouf版本:1.1公告:1、支持旧版(blv)合并2、新增提取音频功能3、修复合并失败的bug
  8. access 战地1不加入ea_战地1、泰坦陨落2将正式加入EA Access会免阵容
  9. Sec-scan漏洞扫描系统
  10. 数字电视知识-- 机顶盒原理技术及应用
  11. Word——图表如何交叉引用-插入题注-交叉引用
  12. 停车场车辆计数案例---以西门子1200PLC演示
  13. word 向程序发送命令时出现错误
  14. 2011RTIC论坛回顾
  15. X-pack 为 Elasticsearch 安全保驾护航
  16. ln 软件链接目录时,当链接文件已经存在时,结果非预期
  17. 花几分钟了解java中的final,何乐而不为呢
  18. 如何查找一篇英文文章中出现频率最高的单词?
  19. (二)S7Comm协议分析
  20. 皇家恩菲尔德子弹500经典男装

热门文章

  1. Adobe Acrobat DC 打开上次浏览的PDF及位置
  2. 2021年高压电工考试题及高压电工考试题库
  3. Scala IO操作
  4. php url重写 转换,用PHP重写URL
  5. 基于diagnose-tools 学习字符设备
  6. 为什么开发人员工作10多年了还会迷茫?没有安全感?
  7. 穿上一件小白裙,就是我喜欢夏日的理由
  8. Java实现短信验证码登录
  9. IDEA调试Flink任务FAQ
  10. python队列实现