Workload Automation是提供一个在设备上运行各种workload的工具,使用Python编写。
WA具有良好的框架结构,方便快捷的扩展。
包含几个方面的扩展:workloads、instruments、result_processors、devices。
workloads:用于在设备上生成各种负荷,这些负荷能较好的控制,进行稳定的测试输入。
instruments:用于获取各种测试数据,比如trace-cmd获取ftracelog、energy_probe获取Power Monitor数据等。
result_processors:用于对测试数据分析,得出测试结果。
比如ipynb_exporter使用IPython Notebook。
devices:是针对待测设备的配置。
WA框架
WA安装和使用下载代码:git clone https://github.com/ARM-software/workload-automation.git
安装WAxxx.yaml是workload的配置文件。
config.py是针对测试环境、待测设备等相关的配置。
out_dir是输出目录。
xxx.yaml的配置比较广泛,WA相关的扩展都可以在这里配置。
wa list xxx显示当前WA扩展功能列表。
wa show xxx显示扩展功能的详细信息。
wa create xxx创建一个新WA workload/package/agenda。
从上面的WA执行流可以清晰的看出WA的是如何工作的。
在执行必要的初始化工作之后,WA开始配置待测设备,加载配置测试仪器。
然后按照agenda中定义的workload开始执行,在执行过程中收集数据。
执行结束过后,进行数据处理。
最后做一些清理工作,关闭应用,清空临时文件等 *** 作。
wa可执行文件位于/usr/local/bin/wa:
#!/usr/bin/python
# EASY-INSTALL-SCRIPT: 'wlauto==2.5.0','wa'
__requires__ = 'wlauto==2.5.0'
__import__('pkg_resources').run_script('wlauto==2.5.0', 'wa')
然后跳转到/usr/local/lib/python2.7/dist-packages/wlauto-2.5.0-py2.7.egg/EGG-INFO/scripts/wa:
#!/usr/bin/python
from wlauto.core.entry_point import main
main()
core/entry_point.py是真正的点。
dhrystone最初是用来进行CPU性能测试,这里主要用来产生100%的负荷。
可以设置duration或者mloops指定执行时间,threads指定启动多少个dhrystone线程。
delay可以在dhrystone进程间阶梯启动。
针对Antutu这种类型需要UI互动的workload,需要通过UiAutomation支持。
android.app.UiAutomation通过虚拟用户动作 *** 作UI界面并且能否识别屏幕内容。
它基于accessibility API来分析UI然后在待测设备view tree上执行 *** 作。
它能接受任意类型的键盘和触摸设备的用户交互。
详细信息参考:https://developer.android.google.cn/reference/android/app/UiAutomation.html
instruments trace-cmd cpufreq energy_probe result_processors ipynb_exporter可以将IPython Notebook类型的文件转换成html或者pdf方便阅读:
html:jupyter-nbconvert --to html <ipynb_file_to_convert>
pdf:jupyter-nbconvert --to pdf <ipynb_file_to_convert>
一个基于dhrystone分析IPA案例 编写yaml配置文件config:
instrumentation: [trace-cmd]
# result_processors: [ipynb_exporter]
trace_events: ['thermal*', 'cpufreq*'
]
trace_buffer_size: 80000
# ipynb_exporter:
# notebook_template: /home/lubaoquan/ipa-tunning/parse_ipa_results.ipynb
# convert_to_html: True
# show_html: True
global:
iterations: 1
workloads:
- name: dhrystone
params:
duration: 60
threads: 8
ipython脚本如下,这里使用到一个python库trappy,专门生成图形化报表。
trappy.summary_plots实现了一系列针对IPA的图表:
IPA的主要功能就是控制CPU温度,可以通过降低频率等措施来cooling。
可以看到CUP的温度得到了很好的,控制
下面IPA Governor的核心PID控制器的图表,也很直观地反映了P、I、D三个参数变化情况,以及PID控制器的输出。
下面图表反映了cpufreq的统计信息。
Workload Automation:http://pythonhosted.org/wlauto/index.html
trappy:https://github.com/ARM-software/trappy
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)