1. 更新说明
1) 修改CPU默认算法为平均值法;
2) 增加监控对象进程筛选的方法设置,让监控更灵活;
3) 修复历史数据中删除已经删除的数据引起的崩溃问题;
4) 优化数据走势图加载数据时内存占用;
5) 优化NDK的so,补齐所有平台so,删除未使用的so;
6) 将最低版本重新设置回Android 4.0,iTest4.5.0版本支持的最低版本为Android4.2。
2. 新增及特色功能介绍
我们的CPU有两种算法,平均值法更通用,是因为其不会丢失信息,top采用的就是平均值法;采样法更灵活,对于一些手机上时间容易出现问题(累积时间应该一直变大,但是有些手机会偶现累积时间变小)的手机上,可以在出现问题的时候再采集1次数据,详情请见《iTest的cpu占用率算法》。考虑到不是所有手机都会出现时间变小,我们在本版本中将默认算法修改成平均值法。
现在很多App存在多进程的情况,我们的iTest也存在多进程,如下图所示。
有时我们需要监控主进程的占用CPU、PSS情况,有时又需要监控被测App多进程的所有CPU、PSS情况,有时还需要监控linux进程的CPU、PSS情况……
为了更方便的满足需求,我们增加了进程筛选的方式选择,如下图所示。
根据包名筛选进程就是只监控主进程的方式,什么“:push”之类的推送进程不在监控范围内,这种优势的简单直接,占用CPU比较少。
根据Uid筛选进程或通过ps命令将该Uid的所有进程都自动筛选出来,也就是默认采用多进程模式,当然这种占用的CPU肯定比上一种方式要高出不少。
根据配置文件是在Uid的基础上,比如某App可能有很多进程,比如3个,而我们需要监控其中的某两个进程,那么就需要用到这个设置了。
接下来我们一个个举例说明(因为内存相对简单,我们拿内存为例),首先看第一种方法,设置好后,监控iTest本身,通过悬浮框显示与应用程序中的内存信息对比,如下图。可以看到iTest监控的内存与应用程序中采集到的数据一致,并没有包括xpush那个进程的信息,CPU占用为5%。
第二种方法,按照Uid筛选进程,方法与上一种类似,设置好后,监控iTest本身,通过悬浮框与应用程序对比,如下图。可以看出iTest监控内存是两个进程内存占用之和,CPU占用为6.9%,高于第一种。
接下来是第三种方法,这里我们以“一分钟输入400字”的讯飞输入法来为例,我们先通过ps找到讯飞输入法的进程列表,可以看到有3个进程,我们如果只想监控其中的两个进程信息,比如非主进程的assist和settings进程,那么前两种方法肯定搞不定了。
这种需要借助于配置文件实现,配置文件如上图所示,把配置文件通过adb push到/sdcard/AndroidPropertyTool4/中,设置好筛选方式后,启动监控,因为应用程序竟然没有找到settings进程信息,这里通过应用程序配合dumpsys meminfo ${ pid } 的方法来对比,如下图所示,可以看到iTest监控到的内存数据是assist和settings进程内存之和。
注:这里可通过adb shell am broadcast -a FLogChange --es level 1命令打开iTest的调试日志,即可看到筛选情况,如下图所示。
之前就接触到了监控测试程序(可执行文件,跑在Android中的linux进程,并无App)的需求。这里还是以iTest为例,从《iTest特色及高级功能介绍》一文中可以看到,我们有内存填充的功能(需要root),这种会调用我们编译好的可执行文件memkit,我们如果想要监控这种进程,我们通过前几种方法(根据界面选择)都是做不到的,因为我们iTest调用memkit的时候uid是root,而不是iTest的uid,如下图。
这时我们可以先把进程设置成第1种(采用包名),通过iTest的命令行方式启动监控,相关命令(更多命令请参考《command_V4.5.0》):adb shell am broadcast -a monitorStart --es monitor cpu,pss --es pkg /data/data/iflytek.testTech.propertytool/files/memkit --es interval 1。监控情况如下图所示。
根据Uid虽然能够监控到多进程内存、CPU之和,但是如果想分开监控,根据界面选择App的方式也是做不到的,这时还是要借助于命令行的方式中来实现,与2.2.4类似,命令及监控情况如下所示:adb shell am broadcast -a monitorStart --es monitor cpu,pss --es pkg /data/data/iflytek.testTech.propertytool/files/memkit,iflytek.testTech.propertytool:xpush --es interval 1。
3. 结束语
4.5.1版本新功能就介绍到这里了,下次再见。