基于wakelock的高能耗软件评估方法与流程

文档序号:15557671发布日期:2018-09-29 01:30阅读:197来源:国知局
本发明属于软件能耗评估
技术领域
,特别是涉及一种基于wakelock的高能耗软件评估方法。
背景技术
:软件能耗评估是进行软件能耗优化的前提。目前软件能耗评估的方法是建立在能耗测量与建模的基础上的。建立能耗模型是能耗评估方面最重要的步骤,这些能耗模型是由能耗测量工具对某一个系统整体或系统中的某些硬件或软件进行测量,然后对测量结果进行分析,发现研究对象的能耗影响因素,研究这些影响因素之间的关系,得出能耗模型的推导过程。在能耗建模方面,现有技术中有根据系统整体能耗与部分能耗较高的组件(如cpu利用率、内存占有率、gpu,硬件等)之间关系,建立一个具体的数学模型,实时估计系统能耗变化。例如pathak提出了一种基于有限状态机(finitestatemachine)的能耗模型(abhinavpathak,y.charliehu,mingzhang.whereistheenergyspentinsidemyapp?:finegrainedenergyaccountingonsmartphoneswitheprof[c].2012:29-42.),该方法是第一个细粒度能耗分析工具,并通过分析硬件组件,进程对应用软件的能耗的影响,建立基于硬件能耗的应用软件的能耗模型并帮助智能设备使用者找到主要耗能的原因。鉴于模型的实用性与建模的难易度,大部分能耗模型选择以cpu利用率进行建模,因为cpu是系统中最耗能的组件,而其他组件的耗能情况往往都与cpu的利用率有直接关系,且能耗贡献率较低的组件也会为建模带来一定的误差,因此以cpu利用率进行建模,评价及估计系统或应用程序能耗具有很高的可用性。现有技术中,有采用线性模型并以cpu利用率作为自变量,来计算系统或应用软件能耗(ripalnathuji,karstenschwan.virtualpower:coordinatedpowermanagementinvirtualizedenterprisesystems[j].acmsigopsoperatingsystemsreview,2007,41(6):265-278.);还有基于时间变量的应用软件能耗,发现应用软件的能耗与它的运行时间呈线性关系,运行时间越长,其产生的能耗就越大。软件能耗模型分析速度快,灵活性较高,可以在复杂多变的环境下对智能手机或其应用软件进行能耗评估,方便终端用户使用,生成的能耗模型对于同一种类型的系统或者软件来说是非常准确的。技术实现要素:本发明的目的在于提供一种基于wakelock的高能耗软件评估方法,以实现在复杂多变的环境下对智能手机或其应用软件进行能耗评估,方便终端用户使用,生成的能耗模型对于同一种类型的系统或者软件非常准确。本发明所采用的技术方案是,公开了一种基于wakelock的高能耗软件评估方法,包括如下步骤:步骤1):数据采集;a)开机,设置为飞行模式,开启wi-fi,独立运行一组类型相似的n个应用软件s={s1,s2,...,sn};启动wakelockdetector工具和powertutor工具,保持这两个工具在后台运行,关闭测试的应用软件,关闭手机屏幕;时间t后,记录wakelockdetector监测到的调用wakelock的应用软件以及调用的次数和占用的时间以及powertutor工具记录的应用软件在cpu上产生的能耗;b)迭代n次,对这n次获取的应用软件能耗数据求均值,得到应用软件对wakelock调用次数以及每次占用时间产生的能耗的集合,将求均值后的数据记录;c)重复上述步骤b)n次,每次采集数据的时间集合为t={t1,t2,.......tn},每次数据采集的时间不完全相同,最终得到n组应用软件能耗与wakelock使用情况数据集合s={s1,s2,........sn},其中,为所有应用软件调用次数的均值集合;为所有应用软件占用时间的均值集合;为所有应用软件产生能耗的均值集合;步骤2):建立能耗模型;根据应用软件对wakelock的调用次数和占用时间的情况,依据多元线性回归模型建立应用软件在cpu上产生能耗的二元线性回归模型;步骤3):通过复可决系数r2的取值、线性相关检验和求误差的方法,对应用软件能耗模型准确性进行评估。进一步地,所述步骤2)中的能耗模型建立过程如下:设数据样本中因变量y主要受i个自变量x1,x2,...,xi的线性影响,公式(1)表示有i个自变量的多元线性回归模型为:y=β0+β1x1+β2x2+...+βixi+ε;(1)公式(1)中,y为随机变量,x1,x2,...,xi为给定的非随机变量,i个自变量之间不存在明显的线性关系;β0,β1,β2,...,βi为i+1个未知参数,即为回归系数;ε为不可观测的随机误差;对x1,x2,...,xi和y分别进行n次独立观测,则根据公式(1)可得:yj=β0+β1x1j+β2x2j+...+βixij+εi,j=1,2,…,n;(2)将公式(1)写成矩阵形式为:y=xβ+β0+ε;(3)公式(3)中,采用最小二乘法对回归系数进行估计,设回归系数β0,β1,β2,...,βi的最小二乘估计值分别为β0',β1',...,βi',对于x1,x2,...,xi取定的n(n=i+1)组不完全相同的值,作独立观测的n组样本数据(yj,x1j,x2j,...,xij),j=1,2,…,n,代入公式(2),得:yj=β0'+β1'x1j+β2'x2j+...+βi'xij+εj,j=1,2,…,n;(4)展开公式(4),即:公式(5)中,εj为样本的随机误差,即残差;则:εj=yi-(β0'+β1'x1j+β2'x2j+...+βi'xij);(6)根据最小二乘法的准则,使得达到极小;依据多元线性回归模型建立应用软件在cpu上产生能耗的二元线性回归模型:e=β0+β1x1+β2x2;(7)公式(7)中,e表示应用软件的能耗,β0为常数代表手机待机模型下的基本能耗,β1表示应用软件对wakelock调用次数对能耗的影响因子,β2表示应用软件对wakelock占用时间对能耗的影响因子,x1代表应用软件对wakelock调用次数,x2代表应用软件在wakelock占用时间。进一步地,所述步骤3)中的用复可决系数r2的取值对应用软件能耗模型准确性进行评估过程如下:根据多元线性回归模型,对总偏差分解公式为:即为:st=sr+se;(9)其中sr为回归平方和,se为误差平方和,st为总偏差平方和;根据sr在st中所占的比例,判断多元线性回归方程对数据样本的拟合程度;则:其中r2又称为判定系数,由公式(10)可知,当r2=1时,即样本数据的回归方程与样本完全拟合;当r2=0时,样本数据的回归方程与样本完全不拟合;即,当r2越接近1,准确度越高,拟合程度越好;另外对r2开平方后,取正值,即r被称为复相关系数,代表因变量y与自变量x1,x2,...,xi之间的线性相关程度,由r2的取值范围可知r的取值为0≤r≤1。所以r越接近1,说明因变量y与自变量x1,x2,...,xi之间的线性相关程度越密切;所述步骤3)中的用线性相关检验对应用软件能耗模型准确性进行评估的过程如下:在多元线性回归方程中,以f-检验来判断回归方程中,因变量y与自变量x1,x2,...,xi是否呈现明显的线性相关,则:msr代表平均回归平方和,mse代表平均误差平方和;当f值越大,说明自变量x1,x2,...,xi与因变量y越显著的线性关系,即有多个回归系数不全为0,当f值越接近1,说明自变量x1,x2,...,xi的变化与因变量y呈线性显著度越低,则回归系数取0的个数越多;所述步骤3)中采用求误差的方法对构造出的应用软件能耗模型进行准确率评估的公式如下:其中,n代表样本的个数,uid代表应用软件,eactual(uid)代表该应用软件的实际能耗,emodel(uid)代表该应用软件通过模型计算的值;在建模过程中,应使emodel(uid)的值尽可能的接近eactual(uid),判断能耗模型准确性的高的标准是ε,其值越小,准确率越高。本发明的有益效果是:1)软件能耗模型分析速度快,灵活性较高,可以在复杂多变的环境下对智能手机或其应用软件进行能耗评估,方便终端用户使用;2)建立了软件能耗与wakelock占用情况的二元线性关系;3)能耗评估模型不仅可以实时动态的发现wakelock被占用的情况,而且可以在很短时间内预测到软件基于wakelock占用情况的能耗。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是基于wakelock的高能耗软件评估方法的流程图;图2是数据采集流程图;图3是wakelockdetector的界面图;图4是wakelockdetector调用wakelock接口的应用软件界面图;图5是应用软件调用wakelock的详细信息界面图;图6是powertutor启动后的界面图;图7是powertutor显示的系统正在运行应用软件的能耗图;图8是powertutor显示不同硬件构件的随着时间变化的能耗曲线图;图9是应用软件能耗与调用wakelock次数及每次占用时间的关系图;图10是应用软件能耗直方图;图11是实际测量值的标准化残差的累积概率分布图;图12是应用软件能耗的测量值与预测值比较图;图13是应用软件能耗的相对误差分析图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例本实施例是在红米note1上进行,操作系统版本是android4.4,首先获取本实验手机的权限,并删除一些手机自带或可能对实验数据产生干扰的应用软件。评估方法如图1所示。1数据采集。如图2所示。开启飞行模式,防止手机信号的发射和接受对能耗的影响。由于应用软件调用wakelock接口时在wifi连接或者数据连接时,表现的更为明显,因此在数据采集过程中,保持wifi连接的状态。但是在没有数据传输的条件下,wifi组件开启产生的能耗也是非常小的,可以忽略不计。由于是基于wakelock的不正当使用导致应用软件的耗能,因此要关闭所有硬件组件,降低应用软件在其他硬件组件上产生的能耗,只考虑应用软件调用wakelock接口,使得cpu运行而产生的能耗。每一次采集结束,就重启手机,可以对之前采集到的数据进行清空,以便防止其影响下次采集数据的准确度。在本实施例中,不仅可以发现不正当占用wakelock的应用软件,也就是说这些应用软件存在有wakelock漏洞,而且发现存在有能耗漏洞的应用软件,这些应用软件都存在有无休眠漏洞,导致系统无法休眠。数据采集中,主要用到两个工具:wakelockdetector工具和powertutor工具。如图3-5所示。wakelockdetector工具是一个系统探测器,可以对android系统上的apps调用wakelock的情况进行探测并记录,统计应用软件调用cpu唤醒锁和屏幕唤醒锁的信息和运行时间,该工具可以查看到正在运行的应用软件调用wakelock的类型,调用次数和时间。该工具通过检测应用软件调用wakelock使用历史找到android系统中消耗电能的应用软件。如图6-8。powertutor是一个基于android系统的在线功耗测量工具,powertutor可以对耗电量较大硬件组件像cpu,lcd,gps,wifi,音频,和蜂窝移动网络提供精确,实时地功耗评估数据。它使用提出的手动或自动生成模型表征技术产生功耗模型。从googleplay上下载58个免费的应用软件,这些应用软件都是googleplay上下载量排名靠前或者用户评价较高的常用软件。基于功能不同,将这58个应用程序共分为13类,具体的软件名称和所属类别以及个数如下表1所示。表1:应用程序分类及名称2.数据降噪由于在应用软件能耗数据采集过程中,是采用手工记录数据的方式,数据的有效时间为单次测量有效,为了防止在记录过程中出现错误以及数据误差,因此需要对采集到的数据进行降噪。而且包含大量噪声的误差数据会严重影响到后续对应用软件的能耗评估建模的准确率和效率。本实施例共收集到了5248组原始数据,对这些数据进行降噪,最后获得了22个对象,共有2000组数据,每一组数据都是由一个4元组组成(应用软件uid,wakelock唤醒时间,wakelock唤醒次数,cpu平均功耗,uid为确定应用软件的唯一标识)。下表2和3,分别是降噪后部分应用软件能耗数据和进行标准化处理后的部分数据。表2:部分降噪后的能耗数据样本表3:部分标准化后的能耗数据样本uid唤醒次数唤醒时间(s)cpu平均功耗(mj)101301.994641.638343.21534101301.643791.209884.00431101231.753191.361941.66607101231.712051.409311.22764101151.669951.543611.31053101151.636391.105181.47389101131.627351.2276442.37891101131.595690.534551.70159101101.255531.128871.21580101101.701281.263171.44483101011.106951.654234.09789101011.255530.816431.2663……………………100781.404121.215801.15784根据降噪后的应用软件能耗样本数据绘制散点图,通过观察散点图来确定应用软件在cpu上产生的能耗与其对wakelock使用情况的关系。在9中,黑色点代表应用软件能耗与wakelock调用次数的关系,灰色点代表应用软件与wakelock占用时间的关系,从图中可以明显的看出黑色点具有显著的正相关线性关系,灰色点具有近似的正相关线性关系,也可以说明应用软件对调用wakelock次数对能耗的影响比其占用时间对能耗的影响较大,前者的系数会大于后者的系数。3.建立基于wakelock机制的应用软件能耗模型从图10中,可以看出能耗数据基本呈现正态分布,建立基于wakelock机制的应用软件能耗模型。首先,本文将采集的应用软件能耗数据样本分为训练数据和测试数据两部分,其中70%作为训练数据用于建立能耗评估模型,剩下的30%作为测试数据在模型检验时使用,建立基于wakelock数据的应用软件能耗回归模型,表4所示为该二元线性回归方程的系数表。表4:二元线性回归方程系数表表5:方差分析对1400组训练数据采用二元线性回归的方法,最小化随机误差ε,拟合确定出基于wakelock机制的软件能耗模型的回归系数,由表4的回归系数表所示,因此可以得出基于wakelock机制的应用软件能耗模型的为:e=6.289x1+0.51x2+34.702,其中x1为应用软件调用wakelock次数,x2为应用软件每次调用所占用的时间,e为其在cpu上产生的功耗。4.通过数学方法来判断该能耗模型的准确度由表5可以看出,回归平方和sr=738781.633,误差平方和se=29981.773,总偏差平方和st=768763.406;平均回归平方和msr=369390.817,平均误差平方和mse=75.52;f=4891.298;判定系数r2=0.961,r=0.980,显著性概率p,f检验值以及复可决系数r2,多元相关系数r可知本文的基于wakelock机制的软件能耗模型符合二元线性回归模型,该模型的回归效果显著。图11中反映了应用软件能耗的实际测量值的标准化残差的累积概率分布图,图中的直线说明了在正态假设的情况下累计概率的期望分布,从中可以看出基本上所有的散点都分布在对角线周围或者对角线上,所有的散点均是来自表2中的uid。说明本文模型中对正态假设的条件基本成立。为了验证该能耗模型的准确度,从应用软件能耗的测试数据选择20%的数据进行模型拟合度测试。图12显示了基于wakelock机制的软件能耗模型的预测值与使用能耗工具的测量值之间的对比关系。图13中反映了应用软件的能测量值与预测值之间的相对误差,可以看出软件能耗模型能够很准确的反映出软件能耗真实值,本实施例中相对误差都比较小且非常集中的落在了(-2%,+4%)之间。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1