系列文章目录
文章目录
【阅读笔记】【App能耗】An Empirical Study on the Impact of Deep Parameters on Mobile App Energy Usage
阅读笔记,非全文翻译
意图
- 查看测量移动App的功耗的方法
摘要
- 调查了开发者
- 调查了手机APP的深度参数
1 引言
贡献:
- 描述了移动应用程序开发人员在深度参数和能量优化方面的实践
- 提出了一个Android中以参数为中心的分析框架,自动识别深度参数并测量其能量影响
- 首次对Android应用程序中深度参数的能量影响进行了系统研究,描述了深度参数在这些应用程序中的作用,并确定了深度参数的三种能量类别。
- 代码开源
2 背景
- 例如MySQL或者x265编码器这种软件系统,很方便来调优,因为程序提供了API方便地指定参数,这些参数也明确地定义了。
- 安卓App的参数通常分布在源代码中,而不是在某个中心(如配置文件)存储的
- deep configuration parameter:由开发者更改的,不影响功能性,即被调整时,不会让用户感知到变化的参数,比如图1所示的一些参数:缓存大小,超时时间,UI元素尺寸等。
3 RQs
- RQ1:在开发者眼中,参数对能量的影响是什么?
- RQ2:开发人员如何选择参数值?
- RQ3:深度参数导致的能源效率低下在应用程序中常见吗?
- RQ4:深度参数什么时候、为什么或者为什么不影响应用程序的能耗?
RQ1-2:开发者调查问卷;RQ3-4:能耗测量实验。
4 开发者视角
结果
- 重点1:粗粒度的电量统计(battery statistics)不足以用于性能调优(energy tuning)
- 发现1:大约一半的移动应用开发者测量应用程序的能源使用。很少有开发人员(12%)对参数的能量影响有信心。
- 发现2:只有8%的开发人员在选择参数值时经常考虑能耗。
- 对于源文件中的参数,我们的受访者估计,大多数参数分散在代码库中;只有三分之一的受访者表示,他们的应用程序在配置文件等文件中有大量的参数集中。
5 深度参数测试框架
深度参数提取
深度参数突变
- 如果我们选择的值太接近原始值,那么能量消耗可能不会改变,但如果我们选择的值太远,我们可能会导致应用崩溃。另一方面,新的值不需要是最优的,因为只要我们能观察到能量减少,我们就可以进行进一步的研究。
6 实验设计
- 测试用例长30~60s
- Pixel手机
- 重点(测量方法):我们对CPU和GPU能量使用了成熟的基于利用率的功率模型,对WiFi使用了基于有限状态机的建模。我们通过使用ftrace收集相关数据(CPU/GPU的状态和频率信息;WiFi的传输日志)并将其输入功率模型来计算每个硬件组件的功率。
7 结果和发现
过滤出的深度参数的结果
验证RQ3
- 发现3:参数导致的能源效率低下在应用程序中并不常见 。在16个应用程序的1644个深度参数中,只有2个在不破坏应用程序功能的情况下减少了能量消耗。
- 两个参数分别是①Reddit客户端中;②P2P浏览器中对多个对等点的ping命令间隔
验证RQ4
- Q: 为什么深度参数通常不影响能耗?
- 发现4: 大多数深层参数要么没有能量效应,要么有有限的能量效应,或者只有极值下的能量效应。我们预计开发人员通常会根据其领域知识避免此类极值。