进程级IO工具可行性分析-iotop

概述

通过上一篇文章中收集到的io分析工具,选取了其中的iotop做进一步调研,为啥选它?因为android官方也有一个iotop,本文就对比了这两个的区别和上手体验。

内容

网络上针对iotop有很多变种库,这里主要调研了https://github.com/laufersteppenwolf/iotop中得shell脚本执行情况;和Android原生自带得iotop工具执行情况。

使用方法

网络上针对iotop有很多变种库,这里主要调研了https://github.com/laufersteppenwolf/iotop中得shell脚本执行情况;和Android原生自带得iotop工具执行情况。

iotop shell脚本

在Android9.0系统中(默认开启了CONFIG_TASKSTATS);
将上文中的iotop脚本文件push到车机端,adb push d:/iotop.sh storage/emulated/0/shell ;
执行sh iotop.sh,观察数据;
在这里插入图片描述
WRITEN,开启进程后写入的总大小;WRITE_SPEED每秒写入的数据大小,默认单为KiB/s。
优点:有源码,使用方便,能记录历史总的IO数据。
缺点:计算速度太慢,效率低。

Android原生自带的iotop

原生的Android9.0以上系统自带有iotop工具,效率高,但是需要按照CPU架构编译代码。在system/bin目录下。在shell环境下直接iotop,可见数据如下。
在这里插入图片描述
Write表示每秒写入的大小,单为是KiB/s。
优点:可以实时抓取系统所有进程IO数据,也可以只抓取一次;效率高。
缺点:需要按照CPU架构编译成可执行的执行文件,目前暂未尝试成功。

Demo验证

在这里插入图片描述
在这里插入图片描述
代码已托管至:
https://github.com/ieewbbwe/gm-demo/tree/master/rwutils

总结

用Shell脚本写的iotop工具已经满足了我们的需求,但是效率较低。
android官方写的iotop效率比较高,但是没有查看进程历史所有io数据的功能,需要进一步研究他的实现方式,并且修改源码添加我们需要的功能。

*附:模拟器adb remount时产生remount of the / superblock failed: Permission denied问题的解决方案。

使用studio自带的模拟器无法remount,通过命令启动模拟器,标记为writable emulator -avd api6 -writable-system,然后再remount就能成功了。
参考:https://blog.csdn.net/qq3965470/article/details/87384087*

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值