微信号:grzlwx

介绍:光荣之路官方资讯

【Android测试】性能——CPU (续)

2016-01-11 22:59 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

相关阅读:【Android测试】性能——CPU

shell获取


  由于 Android 系统是基于 linux 内核开发的,因此我们也可以使用shell 中的top命令来获取当前手机的CPU占用和某个App的占用。

  在 shell 中输入 top 即可开始监控当前手机的CPU,我们看一下效果:

  由于输入了top后,会不断的进行刷新,因此我们就使用 “ top -n 1 ” 让其只显示一次结果就退出,我们看一下一次top命令后都生成了些什么:


  第一行分别代表的是:

    User   用户空间占用CPU的百分比
    System 内核空间占用CPU的百分比
    IOW   等待占用CPU的百分比
    IRQ    中断占用CPU的百分比

    所以将这四个值加在一起就是当前手机的CPU占用的百分比

 如果我们想知道某个应用所占的百分比,例如qq,那么可以看com.tencent.map那一行的第三列,就是当前这个应用在这一时刻所占系统的百分比了。 


一个Bug


  学习了上面的两种方法之后,我们就可以采集App在指定场景下的CPU占用率了,但是我经常发现CPU的百分比是0%的情况,有的时候是因为App确实在后台,可能消耗的特别少,但是有的时候即使在前台它也是0%的情况。当然最终我知道了这是一个bug,我们来看看究竟怎么回事。下面是我采集的几组数据:

  图中一共6组数据,用红框框住的分别是第一组和第四组,每组数据两行内容,第一行上面都提到了,不再解释,下面这一行代表的是各个状态的cpu时间片(通常也用Jiffes这个概念来说明),我们系统真正在计算CPU的时候就是:CPU的利用率就是用执行用户态+系统态的Jiffies除以总的Jiffies来表示。而这个总的Jiffies就是我们这里看到的第二行的和。

  我们可以看到第一组数据的Idle的值非常大,导致最终值很大,因此在1646855做为分母去计算一个数的时候,得到的值就会特别的小,因此就约等于为0了;第四组数据呢,是由于Idle是一个非常大的负值,因此导致最终的和变成了负值,那么最终计算的商肯定是负值,但是由于CPU占用不可能是负值,因此当出现负值的时候,系统也就默认为0了。而Idle的值之所以这么异常,是因为Android4.*系统在四核手机上的一个bug,在5.0系统上谷歌修复了这个bug。

  那么就会有一个问题,如果我们非要在4.*的手机上看CPU的性能呢呢?那么请看下一篇cpu时间片。

<完>

(作者:carter_dream 来源:http://www.cnblogs.com/by-dream/p/5065083.html)


公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756


 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 野狗Meetup技术沙龙 | 6月18日中关村创业大街3W咖啡 Swift教程第三部分:元组,协议,委托和表格视图 黑客入侵网吧 不给钱开不了业 一个人开发一个网站,卖了5.75亿美元 今晚艾丽华┃邀你和手Q贴吧豆瓣做朋友