注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

打击“网络骗子”,从Android CPU利用率做起  

来自刘潇   2013-04-01 13:25:22|  分类: 自动化测试 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
不得不说,在网络充斥着大街小巷的年代,无论是技术男还是宅男们,网络都成为他们获取所需信息的重要途径。
作为一枚半技术男(编码能力较弱,级别低。。)我也曾天真的拜倒在她的石榴裙下,直到。。。

此文为对“网络骗子”的报复,揭穿小小的欺骗。但不能否认网络资料的可信度,请大家继续ctrl+c,ctrl+v~
("网络骗子"是指网络上错误的信息,这些信息未得到验证便被一些人大肆转载,导致使用者信以为真,也误入歧途)

Emmagee开源后(不知道Emmagee或想知道或想进步或者不想悔恨一生的童鞋一定要猛击这里),有人提了个CPU利用率出现负数甚至大于100%的情况,让我对网上盛传的算法产生了怀疑。
CPU利用率算法:(double(totalCpu2 - idleCpu2) - (totalCpu1 - idleCpu1))/ (totalCpu2 - totalCpu1)
其中的totalCpu和idleCpu的数值是通过读取/proc/stat这个文件获得,下图是通过cat命令读出的信息:
打击“网络骗子”,从Android CPU利用率做起 - 网易杭州QA - 网易杭州 QA Team
 
上图标注的数据代表的含义:

user (480826)     从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。 

nice (6665)       从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

system (236914)   从系统启动开始累计到当前时刻,处于核心态的运行时间 

idle (7412750)   从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间 

iowait (211630)   从系统启动开始累计到当前时刻,IO等待时间 

irq (39)          从系统启动开始累计到当前时刻,硬中断时间

softirq (1876)    从系统启动开始累计到当前时刻,软中断时间

 
idleCpu,totalCpu网络盛传的计算方式:

RandomAccessFile cpuInfo = new RandomAccessFile("/proc/stat""r");

String[] toks = cpuInfo.readLine().split("\\s+");

idleCpu = Long.parseLong(toks[5]);  //toks[5]取的是211630

totalCpu = Long.parseLong(toks[1]) + Long.parseLong(toks[2])+ Long.parseLong(toks[3]) + Long.parseLong(toks[4])+ Long.parseLong(toks[6]) + Long.parseLong(toks[5])+ Long.parseLong(toks[7]);

而android是基于Linux内核的,/proc/stat文件结构也和linux相近,实际上7412750(toks[4]才是cpu空闲的节拍数),正确的算法应该是下面:

idleCpu = Long.parseLong(toks[4]);

totalCpu = Long.parseLong(toks[1]) + Long.parseLong(toks[2])+ Long.parseLong(toks[3]) + Long.parseLong(toks[4])+ Long.parseLong(toks[6]) + Long.parseLong(toks[5])+ Long.parseLong(toks[7]);

改完之后搞定,也算弥补了自己犯的错误,给自己和Emmagee的使用者们一个交代!


最后借下面三点给自己和大家提个建议或者小警钟:
1、其实网上的资料可信度还是非常高的,可以持轻微怀疑态度拿来用。
2、三人成虎。网络上很多人都只是转载而没有验证,并不一定可信。而且很多帖子丫的都完全一样,一个字都不差,也不是官方资料,一看就是贴过来的,当时居然没有发现这个漏洞。。
3、以后还是多搜英文资料,多上官网看看吧

  评论这张
 
阅读(564)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016