文摘
设备能耗信息,如文献中,通常是用特别的方法,从而使复制和消费数据比较困难。我们提出一个测量能源消耗的过程,软件应用程序。这个过程包含四个阶段,每个阶段提供一个结构化的可交付成果,报告复制测量所需的信息。过程也引导研究效度威胁分析包含在每个交付。这种分析确保更好的可靠性、信任和信心重用收集到的消费数据。这样一个过程产生一个结构化的消费数据的电子设备(物联网设备、手机、个人电脑、服务器、等等),可以发布和共享与其他研究人员培养比较或进一步调查。一个真实的案例演示了如何应用过程以及如何创建所需的可交付成果。
1。介绍
一个软件程序包含一个序列的指令的执行需要的设备运行消耗能量。今天,能源消耗,一个非功能属性的项目,很少考虑前期作为一个非功能需求,或者,作为一个属性就可以进行测量和监控。然而,能源消费可能代表最终用户的一个关键问题。在笔记本电脑、平板电脑和智能手机,能源消耗明显影响电池寿命,因此,它成为一个用户体验的问题1]。数据中心或比特币矿工(2),能源消耗有直接影响电子账单。在文献中,许多人解决测量问题,减少能源消耗,但通常在一个特设的方式(3]。
根据以证据为基础的软件工程(EBSE) [4]的方法,具体的决策应该是文献中出现的经验证据的支持。这样的证据必须是可信赖的,通过记录和可重复的过程,裨益,并与上下文可以应用,识别,解决一个定义明确的问题,应评税,并报告结果的已知的限制。这样的特点是很少出现在大多数发表的相关文献。
如果能源消耗问题解决在硬件层面,那么任务是通过减少物理设备或通过创建不同的消费使用概要文件(例如,处理器可以减少使用时的频率更少)。另一方面,如果能源消耗问题管理在操作系统层面,那么管理政策可能使用各种设备的不同硬件配置文件(如果可用)或在不需要时关闭硬件。我们认为软件作为能源消耗的一个司机因为它需要几个行动由底层硬件,完成反应基于接收到的指令。测量能耗由于特定的软件意味着解决两个主要问题:(我)隔离程序运行时的能耗同时别人在相同的设备(2)泛化结果:让其他设备的测量是有意义的
当收集能量通过物理测量设备上,价值与目标软件和所有其他进程同时运行在设备上。物理测量不允许一个简单的概括的结果因为相同的软件可以表现不同执行基于硬件以及其他安装软件。另一个选项是定义模型,提供一个估计的能源消耗目标软件,而不是执行物理测量。模型的输入包括设备资源使用在运行时收集的指标。影响这种方法的主要问题是,一个模型可以代表一个设备或一个家庭的设备意味着评估计算模型并不总是有效的。不幸的是,很难得到这个结果,因为每一个硬件制造商应该提供准确数据的消费设备,实时数据,这应该可以作为设备状态信息通过传感器和系统调用操作系统。现在,我们可以很容易地测量应用程序的能耗测量整个设备的能源消耗在执行它,分析获得的数据和估计误差最小化的消费。这需要一个精确的方法来获得最重要的数据和分析有用的信息来评估应用程序的能耗。
在本文中,我们提出一个通用的过程,可以用来衡量一个软件应用程序的能耗。这个过程包括收集和分析能源消耗数据的最佳实践的软件应用程序,将需要执行的步骤一个有效的实证实验。因此,提出作为执行软件的归零地能量测量,以确保每个实验的可重复性和比较。可以使用过程中,我们提出了开展能源计量和评估现有的研究作为一种检查表。
本文的其余部分组织如下:(我)部分2描述该过程收集能源消耗数据从设备以及如何分析数据(2)部分3提供了一个真实的案例研究显示如何创建可交付成果(3)部分4报告的相关工作和评估方面的文献符合我们的流程(iv)部分5总结了手稿,为未来的工作提供线索
2。软件消费测量过程
本文中描述的方案是一个可重复的过程测量的一个软件应用程序,以下简称被测试的软件(SWUT)。这个过程包括以下四个阶段:(我)目标(G):定义研究问题,目标设备(s)的测量将,和SWUT的上下文中执行(2)(H):如何决定如何测量和消费过程需要进行测量(3)做(D):进行测量和收集数据(iv)分析(一):分析研究问题(s)和地址的数据
UML活动图1总结了环绕的主要活动和决策过程和相对威胁结果的有效性。
过程的每个阶段应产生一个可交付成果,总结了决策,结果阶段,和说的威胁分析的有效性。总结每个交付产品提供的元素在表提供1。很明显在表中,每个可交付成果作为输入下一个。
接下来的部分描述过程的每个阶段和繁殖所需的信息。
描述过程的一个示例应用程序,一个简单的案例研究将部分中描述3。
每个阶段需要几个决定,其中一些可以影响结果的有效性。Wholin et al。5)分类有效性的威胁(我)内部效度:专注于如何确定实际上是治疗引起的测量结果(2)建构效度:专注于关系背后的理论实验和观察(3)外部效度:关注结果的普遍性研究的范围之外(iv)结论有效性:专注于治疗中使用的实验之间的关系和实际测量结果
表1显示了这些类别的威胁和它们是如何影响过程的每个阶段。
2.1。第一阶段:目标
这一阶段是关于定义研究问题,将导致测量过程。从研究问题的范围仅限于能源消耗,我们建议来表示目标作为模板的灵感来自GQM方法(6]:”理解描述比较预测的消费的SWUT运行在设备(年代)在上下文(年代) 。”
研究问题的一个例子应用这个模板是获得“描述冒泡排序算法的能量消耗在Java语言中实现运行时在覆盆子π版本2 b的上下文中Raspbian Linux操作系统。”
第一个方面的目的是考虑测量,这取决于特定的过程和知识水平包括以下选项:(我)理解:这个目标适用于这一过程的初步调查是不知名的理解过程的输入和输出变量。名义或序数措施可能描述变量。(2)描述:这个目标适用于这一过程部分,增强其描述通过提供输入,输出和上下文变量影响的过程。间隔、比率或绝对的措施可能描述变量。变量之间的关系,分析或概率,提出了,但他们的有效性是有限的。(3)比较:这个目标是一个变异的描述两个相似SWUTs特征和比较的变量定义。(iv)预测:这一目标适用于著名的过程提供了一个模型,涉及所有变量的过程。模型的有效性是广泛的,因此输出变量是可靠地预测的输入变量。
消费可以测量的能量(焦耳)或功率(瓦特),这是相关的,一个可能的计算。然而,在实践中,他们并不完全可以互换:(我)从研究目标、权力提供了一个直接查看和适合的任务(可能是无限的)持续时间很长,而能源适合任务与一个有限的时间。例如,如果被测软件的功能是“阅读电子邮件,”或“转换从mp3, wma音频文件,”然后能源是最适合描述功能的消费。如果软件功能是“控制发动机的速度,”然后权力是最合适的。(2)从研究目标、权力提供了一个直接查看和适合的任务(可能是无限的)持续时间很长,而能源适合任务与一个有限的时间。例如,如果被测软件的功能是“阅读电子邮件,”或“转换从mp3, wma音频文件,”然后能源的消费是最适合描述功能。如果软件功能是“控制发动机的速度,”然后权力是最合适的。测量作为一个功能的硬件配置(服务器和桌面和移动电话),它可能更容易衡量电力与能源相比,这将是讨论的部分2。2。
SWUT可以表示一个函数,一组函数,软件过程,软件应用程序或软件应用程序的特征子集。的描述SWUT包括编程语言,用于生产它的工具链(例如,编译器及其版本或链接器及其版本),以及使用场景。哈曼和他的同事们(7)确定SWUT粒度的三个层次:细粒,对应于个人行代码或语句;midgrained,这是一个代码块或方法/步骤;或粗粒度解决整个程序执行一段时间。
设备代表了物理设备(或设备)规范(制作、模型、版本、CPU架构,和内存)中使用的实验。
上下文描述可能影响实验的其他属性,如:(我)操作系统(2)运行的进程同时执行测量(3)设备配置(iv)任何硬件和软件工具用于收集信息的能量
自从SWUT可以非常复杂,解决研究问题可能需要创建许多子目标,瞄准测量能量(或权力)的消费特性的复杂SWUT的一个预定义的子集。我们将提供一个完整的示例3。
见表1,决策必须考虑外部效度威胁,将泛化的结果:(1)威胁帮助确定结果是否有效的分析设备(s)和上下文(s)或更广泛的有效性(2)威胁定义结果重要性将有效的其他设备上或上下文。如果是的,那么研究人员应该说明设备(s)和上下文(s)应该选择最小化外部威胁的有效性。如果不是这样,研究者应该状态如果是在实验获得的目标结果只对特定的设备和环境。
这种类型的分析的初期阶段过程中有一个双重的贡献。它使实验更精确的和正式的以及迫使他正在试验选择最佳上下文(s)和设备(s)达到我们的目标。
这个阶段的输出是一个可交付成果,包含目标描述由研究问题(s)、设备(s), SWUT,上下文和外部威胁的有效性分析。
2.2。第二阶段:
计量单位(能源或电力)决定在第一阶段,这一步将决定如何测量。在以下描述的三个选项,而表2分析了各技术的优缺点。
(1)即时功率测量。该技术测量瞬时电流消耗的设备,然后增加这个值的电压。在一段时间内的积分给出了能源的价值。即时功率测量是精确如果采样频率高,但是它们需要物理仪器。这种方法通常运行在设备层面,虽然硬件组件级测量是可行的,并且可以使用粗粒度SWUT。
(2)时间测量。收集设备的能源消耗的另一种方法是通过测量时间。电池充满电(健康)拥有一个已知的能量(例如,1000 mAh对应于18 kJ)。假设一个常数消费随着时间的推移,能源枯竭的速度取决于设备的功耗。所以,计算平均功率消耗通过测量时间完全放电的电池。这个测量依赖于电池容量测量的精度。如果这个值是不精确的,那么将是计算消费价值。另一个问题是如何线性电池放电的时候,特别是衡量收集不完全放电的电池。没有电池的设备(例如,SoC的电脑,如覆盆子π),测量的类型可以通过连接设备的电池,而不是连接到电网。这种方法的局限性与前一个相同的粒度。
(3)估计模型。消费测量通过模型计算的方式与一个特定设备的功耗与内部资源使用指标,如CPU状态,指示,内存或磁盘访问和网络适配器。在文献中,存在功率模型的一些例子。例如,Patak et al。8)描述了一种基于系统调用跟踪电源模块。这种方法使用系统调用来估算的资源使用情况。Di Nucci et al。9)提出了一个基于软件的方法,名叫佩特拉,证明这些方法并不比基于硬件固有的不精确或基于模型的解决方案。他们的方法是专门针对测试Android应用程序。Nacci et al。10]介绍了一种方法来构建一个Android设备功率模型通过使用Android api来检索不同的州,包括电池、网络连接、wi - fi、和屏幕。两个组件通常实现模型:(我)资源使用分析器测量资源的使用电脑,这取决于操作系统(2)读取数据的资源使用消费转换器提供的资源使用分析器,在数学模型的基础上,它转化成消费值。数学模型是一个参数,根据不同的设备。
后者组件需要选择一个模型适合的设备SWUT将运行。模型应提供估计误差、采样频率资源使用情况的更新,和提取资源利用带来的开销。的开销是一个至关重要的价值,因为一个软件过程实施模型执行资源使用数据收集,,和所有其他的软件过程一样,它影响的消费设备执行它。采样频率和开销是直接成比例。
后一种方法的优点是适用于细粒度SWUT。
这个阶段的输出如何交付如表中所述1,其中包含用于获取的关键决策SWUT的消费。交付将包含不同元素的基础上,选择测量方法,如表所示3。
组件的可交付成果,以及他们不同的方式根据所选方法,是详细的下面。
2.2.1。硬件设备
所需的硬件仪器测量方法基于即时功率和时间。
(4)即时的力量。执行功率测量,下面的硬件设备要求:(我)一个电压发生器(2)分流电阻(例如,0.05 )(3)ADC(模数转换器)(iv)监督设备
图2显示了一个典型的配置测量即时从设备能耗数据。ADC读取电压降V分流电阻。这些数据被发送到监控设备,稍后将用于分析。根据欧姆定律,V / R提供当前的我,所以即时功耗计算 。如果设备有一个电池组,它应该被移除,因为电压发生器也将电池组充电实验期间,提供不一致的ADC值。不确定性的权力 。不确定性是由于测量误差和使用合适的设备时通常是相对较小的。在市场上,有几个电表可用于不同类别的设备(例如,移动电话或单板电脑,个人电脑)。它不需要建立一个功率计;然而,它的内部结构可以简化为图中所描述的电路2。
(5)时间测量。图中描述3,监督设备系统时间在测试运行期间,当电池电量变化,当电池完全放电的设备。自动化测量的时间,一个可编程开关(虚线所代表的监督设备和开关之间的连接)可用于管理电池的充电过程,当它到达一个预定义的排放值(例如,2%)。如果电池信息不可用,那么预定义的流量值是0%,和测试设备将关闭。在这里,问题是如何触发这个事件。一个例子可能是阅读的输出电压值与ADC的USB端口。电压开始下降时,设备将自动关闭,所以这个事件可以触发电池充电。
2.2.2。软件工具
所需的软件工具只有在时间测量方法被选中。时间测量需要一个自动程序,调用SWUT不断,直到电池放电。结束时测量,结果是平均消费整个测试运行。总而言之,测量过程应该执行以下步骤:(我)电池充电电池,直到最高水平(2)记录系统时间(3)运行一个循环内的SWUT直到电池完全放电;通常,SWUT不能完全放电的电池在一个单一的执行,所以它必须运行在一个无限循环多次在记录运行的数量(iv)记录系统时间当电池充电水平变化(如果这些数据是可用的)(v)重新记录系统时间,当电池充电水平达到一个预定义的最小值或者当它完全放电。计算实验总时间T和运行的数量,然后将结果存储在一个文件中(vi)电池充电,直到它完全充电(七)重复这些步骤来获得合理的统计数据(例如,30数据点代表一个有意义的数据集(11])。
一旦收集原始数据,平均能耗计算分析所花费的时间完全放电的电池 ,在哪里(我) 每小时的平均功耗消耗吗(2)C电池的总容量在mAh(或总容量减去在预定义的最小剩余能力。)(3)T是在时间和放电所需的时间吗(iv)V提供的电压电池吗
而总能量消耗可以计算 。
上的不确定性是 ,因此这取决于以下因素:(我) :实际电池容量的不确定性,这是最关键的,因为电池会改变他们的能力随着时间的推移,甚至新电池可能实际容量完全不同于名义(2) :错误的时间测量:这个错误通常是小因为完成电池放电需要很长时间(3) :在电压测量误差:这个错误必须最小化使用合适的测量仪器
这种方法假定恒功率消耗值在整个电池放电时间。
2.2.3。同步
即时的力量:在这种方法中,消费数据,收集与一定的采样频率,可以在监督设备用于收集数据。然而,电力消耗必须与流程执行SWUT有关,和DUT这个信息是可用的。换句话说,它需要同步DUT的时间尺度和监督设备。这个问题可以从两个方面来解决:(我)DUT和监督设备系统时间同步,这样每个样本属于一个已知的时间戳(2)仪器的代码通过添加独特的权力模式定义每次运行期之前和之后
第一种方法需要精确的时间同步和DUT之间的测量装置来记录只有SWUT执行相关消费。同步可以通过使用国家结核控制规划(网络时间协议)。然而,这种解决方案会导致错误超过100 ms由于网络拥塞。它还需要监督设备和测试设备连接至少一个局域网达到国家结核控制规划服务器。一个错误在两个设备之间的同步会导致数据失效,特别是在实验进行级联,因为消费SWUT收集的数据并不完全相关。第二种方法允许消费协会没有同步的SWUT SWUT通过添加标记。标记被称为代码模式,产生独特的消费模式识别的数据数据分析后的数据收集和可能被定义为(我)忙碌的标志:一个函数执行一个空的无限循环(2)睡眠标志:调用睡眠功能
可以自动识别这些著名的模式使用信号处理技术在消费数据因为繁忙的标记有非常高的功耗,而睡眠标志非常低功耗(部分2.2.7)。图4标记礼物三忙,两个睡眠标记,和一个执行SWUT标记为工作。
模型估计:问题相关的时间和数据同步时,采用这种方法类似。而不是一个消费值,会有资源使用数据。然后,它将被要求将资源使用数据转化为消费数据允许使用时间戳隔离SWUT相关消费数据。或者,可以添加一个标记SWUT识别SWUT前后两个标记之间的消费数据。而后者的方法可以准确,第一种方法更为简单,因为模型估计不需要监督设备,因此没有必要进行时钟同步。所以,可以隔离SWUT消费数据通过使用时间戳。
2.2.4。采样频率
抽样频率时需要采用即时功率和模型估计方法。即时功耗测量代表每个样本的平均功耗。一个合适的采样频率是125千赫,因为只有1%的能源消耗所超过这个频率Saborido et al。12]。作者指出,10 kHz测量可能会导致一个错误的8%,所以这样一个低采样频率造成重大错误。
数据日志的大小应该被视为另一个约束。考虑到每个样本可以∼10个字节,10 kHz频率,脚本产生∼100 k字节每秒。因此,采样频率应该仔细选择基于运行SWUT过程的持续时间,记录的相关尺寸数据,可接受的错误。
采样频率相同的权衡模型估计方法是有效的。然而,它应该考虑记录资源使用过于频繁会导致一个合理的开销。
2.2.5。文件格式
如何交付文档包含的解释所使用的原始数据文件格式。
即时功率测量的原始数据都包含在一个纯文本文件,每一行包含即时电流一个样品时间T。这种格式很简单,易于阅读,不包含任何无关的数据。如果即时测量包含多个数据(例如,电流,电压,和当前系统时间),那么最好是组织JSON或XML格式的文件明确地表达数据包含在文件的类型。这一定义的文件格式和内容是有用的用于创建数据文件的解析器。相同的文件格式可以被应用到模型的评估方法,考虑到提供的输出模型解析并转换为消费。
在时间测量的情况下,原始数据都包含在一个纯文本文件,表示实验的持续时间。这种格式很简单,易于阅读,不包含任何无关的数据,例如,1:15:13.041454。
2.2.6款。分析方法
能量测量运动的典型目标是评估是否主要因素,例如,一个特定的算法或计算体系结构,影响能源消耗为特定任务。此外,经常实验设计允许监测可能的混杂因素。为此,拟合的基本分析方法包括线性模型的因素具有以下形式:
因子变量可以是一个基本的指标或连续变量。线性模型将受到一个avalysis方差(方差分析)来理解的统计显著性因素对功率的影响。方差分析是一种统计方法分析意味着不同人群间的区别;意味着不同来源的方差和方差分析属性的概率评估一个观察到的差异是由于一个实际的影响因素和随机效应(如测量噪声)。通常这种probability-called价值比较与一个预定义的阈值(5%)是一种常见的选择,以决定是否可以治疗产生真正的影响。
方差分析是一个参数的测试,这意味着它的结果是可靠的几个条件得到满足时,最重要的是正常的样本。可以通过检查正常的Shapiro-Wilk测试;如果测试返回小于一个给定的值α水平,可以得出结论,并非来自正态分布的数据。
当不满足方差分析的参数的假设,一个排列测试选择方差分析可以使用(例如,使用lmPerm R包(13])。除了统计学意义,重要的是评价因素的影响的大小。一个基本的评估可以通过查看执行估计回归系数的相对价值或通过标准化系数,如η(https://github.com/SoftengPoliTo/powtran/(上次访问:2019/09/22))。
当一个简单的比较两个样本是必需的,没有任何辅助因子参与,t测试可以应用,被一个方差分析的简化版本。
2.2.7。威胁的有效性分析
不管选择的方法,如何交付必须包含三个不同的威胁的分析的有效性。
内部效度:这取决于消费数据是否与SWUT的执行有关。几个可能的情况包括以下:(我)设备没有操作系统,只有SWUT执行。设备的消费完全可以归结到SWUT。(2)设备有一个多任务操作系统。SWUT和其他进程(在应用程序或操作系统级别)并发运行。现在的问题是如何把消费设备的每一个过程(特别是SWUT,)。一个选项是停止所有进程的执行SWUT除外。这是不可行的大多数OSs,所以剩下的选择就是最小化运行进程的集合与严格要求的操作系统。然后,它可以测量设备消费设备闲置时,即,只有OS-related进程正在运行,当运行SWUT。两个消费值之间的差异代表一个合理的近似有效消费应由SWUT。(3)该设备有一个多核处理器。可以在任何执行SWUT核心在一个特定的CPU频率。出于这个原因,不可能两个消费测量同一个SWUT上执行相同的设备提供相同的值。
SWUT不是隔离的执行时可能不构成威胁的目标过程进行比较。在这种情况下,比较可以当假设执行其他程序产生的噪声是相似的测试方案。
建构效度:这取决于消费测量以及测量的精度:(我)即时功耗精度影响了主要由电流的精确测量和过程产生的噪声与SWUT并行执行内部效度(见上面的讨论)。(2)时间测量的测量精度影响包含的能量电池,通过非线性放电模式,通过减少电池容量充电周期,和识别所需的时间,包含的能量电池低于阈值定义。(3)模型估计基于模型的精度的关键属性。该模型可能会或可能不会考虑相关因素(例如,加热),因此,产生差估计。
结论有效性:这是最后一类威胁分析在这个阶段。获得统计证据,研究人员必须计划一定数量的重复测量相同的消费。有时,这可能是一个问题,特别是在每次运行的时间测量可以持续几个小时。因此,当它不是可行的计划很多重复相同的运行,研究者应考虑之间的权衡的重复和可能的错误结论。应该使用适当的统计检验来确定观察到的差异的可能性或与测量相关的置信区间。
2.3。第三阶段:
在这个阶段,研究实现实验设计在前面的阶段。关键的部分是过程自动化。每个执行的过程应该自治,结论,研究者应该能够收集数据而不干预。人工干预会改变程序的执行,因为它不会重复同样的动作。实现这一目标,需要定义一个脚本,多次执行相同的步骤。因此,这一阶段的目标是提供一个自动化的过程有效的DUT (s)用于实验。
在即时测量功耗的情况下,脚本应该自动化数据采集和SWUT执行。当执行一次测量,该脚本必须存储所有的系统时间以及管理电池充电,以避免人工干预。在[14,15),作者解释说可能时间这种场景的实现自动化测量。对于模型测试,脚本运行在前一阶段定义的所有软件测量工具为每个场景和收集资源使用日志。
一个不正确的设置实验造成了威胁建构效度结果,因为它可能导致测量错误的构造。
这个阶段将脚本的输出,自动数据收集的过程和一组文件,其中包含原始的能源消耗数据根据提供的数据格式在前面的阶段。做交付文档,介绍了表1将合成的报告,列出并解释每个脚本的内容和原始数据。脚本和数据的可用性使复制和验证的结果在任何科学方法是由第三方实施。推荐的做法是利用公共repositories-e.g开放。、figShare Zenodo, GitHub-to存储脚本和数据。
2.4。第四阶段:分析
在这个阶段,消费在前一阶段收集的数据进行了分析。有两种方法对于识别任务相关数据掌权的痕迹:(我)在线与录音机和测量系统和之间的同步(2)离线使用标记添加到痕迹。
与第一种方法,只有部分的痕迹与观察到的任务记录,后来处理。需要精确同步的方法基于能力设备和测量仪器之间的及时沟通。
第二种方法要求所有痕迹的一系列的实验记录,然后,在分析阶段,部分与观察到的任务是提取和处理。它不需要同步,只要简单的仪器将标记添加到痕迹。这种方法支持的R包Powtran (https://github.com/SoftengPoliTo/powtran/(上次访问:2019/09/22))。功率跟踪分析的结果是能源消耗的总量来执行一个任务。
无论哪种方式可以获得的能源消耗分析根据多阶段定义的方法。
分析阶段可能构成威胁结论有效性。特别是,必须检查数据异常值的存在,必须进行评估,然后决定必须采取有关可能的去除。此外,能量的分布数据应该被识别;这是很重要的,允许选择适当的统计检验。
这个阶段的输出是一个可交付使用的,称为分析可交付成果如表所示1,其中包含数据分析脚本,数据分析结果和结论有效性威胁分析。
3所示。应用消费测量过程
在本节中,我们展示了该过程可以应用到一个电池驱动的覆盆子π的例子用于传感器收集的整数值。实验可以被视为一个典型的代表环境测量一个软件应用程序的能耗是必需的,因为这估计是至关重要的发展嵌入式软件(16]。在这个例子中,应选择最有效的排序算法最大化电池。考虑到问题是电池时间,所有的消费测量将能量测量。以下小节是一个交付过程根据我们提出的框架。
3.1。目标交付
中定义的部分2。1目标交付包含研究问题,SwUT的描述,设备,环境,和外部威胁的有效性分析。
3.1.1。研究问题
RQ1:比较计数排序算法的能量消耗在C语言中实现和归并排序算法用C语言实现上运行覆盆子π版本2 b的上下文中Raspbian Linux操作系统:(我)RQ1a:描述计数排序算法的能量消耗在C语言实现上运行覆盆子π版本2 b的上下文中Raspbian Linux操作系统(2)RQ1b:特征归并排序算法的能量消耗在C语言实现上运行覆盆子π版本2 b的上下文中Raspbian Linux操作系统。
3.1.2。SWUT描述
以下两个SWUTs被认为是在实验中:(我)计数排序:2-pass排序算法O(n)时间复杂度(2)归并排序:单次的排序算法O(nlogn)时间复杂度
考虑算法的简要描述和代码实现报告附录A . 1。
我们计划5个不同的数据集测试SwUT标有数字从1到5。第一个数据集包含数字从0到(DATASET_SIZE-1)按升序和降序从第二集包含数字(DATASET_SIZE-1)为0。其余的三个数据集包含伪随机数值介于0到(DATASET_SIZE-1)。种子是已知的,所以随时可以生成相同的伪随机数。对于这些数据,DATASET_SIZE代表50000个元素。
3.1.3。设备规格和上下文
最相关的测试设备的硬件规格,覆盆子π2 b,指定表4。
表中指定的测量5。全套设备规范和流程运行的完整列表在实验报告附录a。
3.1.4。外部效度威胁分析
结果将是有效的只有树莓π版本2 b,和实验者接受这个限制。
3.2。如何交付
中定义的部分2。2如何交付,瞬间功率测量将包含以下部分:硬件设备、同步、采样频率、文件格式,和威胁有效性分析。
3.2.1之上。硬件设备
(我)电压发生器:5V2(最大)(2)分流电阻:0.05(3)ADC:国家仪器ni - 6210(iv)监督设备:台式电脑
3.2.2。采样和数据同步
没有时钟同步或后处理的数据分析。
3.2.3。采样频率
选定的采样频率是125千赫。
3.2.4。文件格式
文件名实验包括以下细节:设备制造商、设备模型,算法名称,编程语言,数据集大小和数据集的标签(例如,进步的数量)。一个示例文件名称Raspberry_2b_counting_c_5000_1。文件内容样本可以如下:149160E+ 0142452E+ 0152316E+ 0
3.2.5。威胁的有效性分析
限制内部效度威胁相关的正确确定消费价值为一个特定的过程,我们计划(我)运行实验Raspbian Lite的新安装操作系统并发进程的数量降到最低(2)测量设备的即时功耗和闲置(3)从获得的数据减去空闲值在每次运行(部分3.2。7)
限制对建构效度威胁,我们提供一个并联电阻的电压测量。登录文件的值电压乘以电压除以并联电阻的值。这个乘法将提供即时功耗值根据欧姆定律,P=V·我。在这个计算,我们不考虑分流电阻的温度,这将改变我们的测量。我们愿意接受这个错误,因为它不会显著影响我们的结果。
限制威胁的结论的有效性,我们将重复每个测量30次。
3.2.6。做的可交付成果
我们将收集即时功耗在算法的执行。在分析阶段,我们将改变即时功率消耗的能量值计算的积分即时功耗实验时间间隔。对于自动化实验,我们创建了一个脚本在Python语言,(我)监督设备运行数据收集器(2)运行上的SwUT覆盆子π(3)即时功耗存储在一个文本文件(iv)即时功耗文件提交,推动本地git存储库
覆盆子π局域网连接到路由器。监督设备也连接到同一个网络,因此可以通过SSH运行SwUT。该脚本从输入文件中读取的待办事项列表。待办事项清单包括一条线代表SwUT每次运行指定以下信息:(我)设备模型(2)编程语言;(3)SwUT(iv)数据集的大小(v)数据集的标签
重复这些操作编程,我们创建了一个项目,叫做执行人,运行在覆盆子π,将作为输入如下:(我)SwUT名称(2)数据集的大小(3)数据集的标签
开始时,遗嘱执行人(1)动态地创建数据集(2)运行标志(3)运行SwUT(4)重复2和3点30次(5)结束
实验用python编写自动化脚本,待办事项列表文件,原始数据在一个开放的网上存储库(17]。
待办事项列表的每个元素执行相同的任务30次,如部分所述3.2。5。每次运行之前是一个标记的实现,它允许识别的SwUT即时能耗数据。
3.2.7。分析可交付成果
对应于原始的中移动,我们制定以下零假设:没有显著差异的集中趋势的能量消耗的两种算法在执行排序的任务。显著性水平(α),相应的危险犯一个错误,即,rejecting the null hypothesis while it is true, may be assigned to the standard 5%.
分析结果。能源消耗的分布每个任务可以表示图形的箱线图显示在图中5。
总结数据,连同集中趋势,分散和常态报道在表6。报告的值是毫焦耳。
我们观察到最后一列,报告Shapiro-Wilk价值测试,包含值小于5%(我们的参考价值)。我们可以拒绝零假设两种算法的样本来自正态分布值。因此,我们应该在以下应用非参数统计分析。检查零假设,我们可以应用Mann-WhitneyU测试。的测试返回的值小于参考水平,所以我们可以拒绝零假设。我们得出的结论是,在能源消耗之间存在显著差异的两个算法。量化的大小差异,我们计算标准化效应大小。为此,我们采用悬崖的δ统计。我们获得的效应量−1意味着第一个算法所消耗的能源数量(计数排序)小于第二个通过大量(归并排序)。所以,我们得出结论计数排序的算法来选择更好的能源效率。
4所示。相关工作
在最近几年,兴趣软件如何影响设备的能耗急剧上升。可以把相关的工作主题分为两类:(1)能源消耗测量/评估(2)减少能源消耗/优化
第一类关注能源的方式测量或估计。最近的一份工作哈曼et al。7)分类能源测试基于搜索的软件工程最重要的领域之一,凸显了需要可信赖的指标和快速和良好定义的energy-measuring程序。本文还强调了一些新颖的基于硬件的方法,例如,渗透(18)方法使用符号执行捕获和重新执行路径。我们提出的方法是适应任何替代能源或电力测量方法,因为使用不同的过程只会影响硬件部分的交付和如何交付正式的实验步骤。
误et al。19)审查不同的能量测量方法可分为测量/估计和造型。在这第一个子类,目标是确定能耗通过硬件设备,而后者创建一个设备能耗的数学模型没有外部设备提供能源数据。通过分析文献,我们发现et al。辛德20.)提出了一种方法来测量能源消耗通过不同版本的软件应用程序的不同。存在工作原型,这允许估计移动设备的能源消耗,最受欢迎的是DevScope [21],AppScope [22],En-Track [23]。这项工作提出了完整和工作原型测量功耗的Android应用程序。这些方法的主要问题是支持有限数量的设备。出于这个原因,它是难以复制的研究来验证测量或应用相同的测量在一个稍微不同的设备或软件。
第二类主要关注架构改动或源代码实现能源消耗减少或优化。的文献综述Aleti et al。24)描述了一些方法来减少能源消耗提高软件架构。
所有这些努力通常是个体优化和难以适用于一般情况。此外,两个类别分享一些常见的执行步骤,如数据收集、代码插装,和数据分析,但往往不容易比较不同实验的程序从一个统一的符号类似任务的文档是失踪。它是有用的考虑功耗的一般过程测量一个软件应用程序,并提供所需的工具文档和分析测量获得的数据。据我们所知,这样的一般的和可重复的方法是文献中失踪。
可以识别许多引用测量软件应用的能源消耗和提出减少这种现象的有效办法9,25- - - - - -40]。在表7,我们比较所提供的信息(列为表列)我们的过程以及这些文件所提供的资料(列为表行)。一个复选标记(✓)表明,当前信息由我们的过程也包含在相关的论文。节2,我们详细解释我们所有信息产生的输出过程。表7表明,在文献中有测量软件应用的能源消耗的方法。然而,没有共同的过程从软件中提取能源数据的应用程序。在细节,所有的分析工作缺少以下特点:(我)提供的所有信息是我们的过程的一部分(2)一步一步解释如何复制实验(3)提供一个定义格式发布获得的原始数据
根据已定义的过程将使一个比较不同的实验的数据。这将引导开发人员对高能消费的对策处理案件。我们之前确定了高层框架(41),它描述了动机,导致测量软件应用的能源消耗。所以,这项工作提出了一个共同的主要贡献过程供任何人使用这样的软件应用程序的数据中提取能量有可比数据提取和分析的标准方法。
5。结论
能源消费的意识是一个新兴的软件和硬件质量。移动设备使用的扩张以及物联网设备的扩散使能源消耗成为关键问题由于有限的能源电池可以存储。在本文中,我们提出了一个明确的和严格的计划,开展软件能耗测量方法,我们所知,没有以前文献中可用。提出过程包含功能启用的采用以证据为基础的软件工程,因为它产生的结果(我)可信赖的:详细文档的目标、规划和执行允许质量评估(2)可比性:背景细节和过程的均匀性缓解比较(3)可操作的:定义的因素,因此,任何能源改善行动可以适当的目标
适用的方法是在真实的背景和作者已经应用的先前的研究。此外,据报道,一个示例应用程序作为模板指导第三方应用程序。
此外,评估现有的研究方法也可以作为一个清单。在这个意义上我们用它来评估相关工作,总结如表7。
对于未来的工作,我们计划创建一个存储库,可以上传据我们所描述的过程产生的可交付成果。这样的存储库可以比较不同的研究和构建一个经验知识的支持。
附录
答:实验细节
. 1。SWUT代码
计数排序是一个2-pass排序算法,有效的在不同的键的数目小于项目的数量。首先通过计算中出现的每个关键辅助数组,然后运行总所以每个辅助条目的数量之前的钥匙。第二步将每一项放入其最终位置根据辅助输入的关键。时间复杂度是O(n)。实现了测试和遵循艺术的状态:无效counting_sort (int一个[],intn){int我, , ;B= malloc (n 运算符(int));C= malloc (米 运算符(int));为(我= 0;我<米;我+ +)C(我)= 0;为(我= 0;我<n;我+ +)C(一个(我]]+ +;为(我= 1;我<米;我+ +)C(我)+ =C(我−1);为(我=n−1;我≥0;我−−){B(C(一个(我]]]=−1一个(我];C(一个(我]]−−;}为(我= 0;我<n;我+ +)一个(我]=B(我];}
归并排序算法把物品分为两组,每组递归排序,合并成一个最终的排序序列。时间复杂度是O(nlogn)。实现了测试和遵循艺术的状态:无效my_merge_c(int ,int昏暗的){int ;辅助= (int )malloc(昏暗的运算符(int));merge_sort_recur ( ,0,昏暗的−1、辅助);}无效merge_sort_recur (int ,intp,intr,int ){int问;如果(p<r){问= (p+r)/ 2;merge_sort_recur ( ,p,问、辅助);merge_sort_recur ( ,问+ 1,r、辅助);my_merge ( ,p,问,r、辅助);}}无效my_merge (int ,intp,int问,intr,int ){int我,j,k;为(我=p,j=问+ 1,k=p;我≤问& &j≤r){如果(< )辅助(k+ +)= ;其他的辅助(k+ +)= ;}而(我≤问)辅助(k+ +)= ;而(j≤r)辅助(k+ +)= ;为(k=p;k≤r;k+ +) =辅助[k];}
由信用证。设备和环境
测试设备的硬件规格,覆盆子π2 b,包括(我)一个900 MHz四核手臂Cortex-A7 CPU(2)1 GB RAM(3)USB接口:没有设备连接(iv)40 GPIO管脚:不是用于我们的实验(v)完整的HDMI端口:不显示连接(vi)以太网端口:连接到一个本地路由器没有互联网连接(七)结合3.5毫米音频杰克和复合视频:不使用(八)相机界面:不使用(第九)显示界面:不使用(x)微型SD:金斯敦16 GB类10(十一)第四VideoCore 3 d图形核心
对于这个实验,上下文可以总结如下:(我)Raspbian Linux操作系统:杰西Lite,内核版本4.4(2)默认的操作系统配置(3)过程运行期间的实验:(1)kworker(2)systemd(3)kthreadd(4)ksoftirqd(5)rcu_sched(6)rcu_bh(7)迁移(8)kdevtmpfs(9)netns(10)性能(11)khungtaskd(12)回写(13)加密(14)bioset(15)kblockd(16)rpciod(17)kswapd0(18)vmstat(19)fsnotify_mark(20)nfsiod(21)kthrotld(22)bioset(iv)权力通过ADC NI USB 6210年收集的信息(v)电力信息加工定制软件用C语言编写的使用默认倪库;软件已经通过一个开放的网上存储库(42]
数据可用性
数据用于支持本研究的结果的形式包含在本文引用链接到资源上可用figShare公共开放存储库。
的利益冲突
作者宣称没有利益冲突有关的出版。