Workload Automation分析及其使用

Workload Automation分析及其使用,第1张

Workload Automation分析及其使用 Workload Automation介绍

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

安装WA sudo python setup.py  install 运行WA wa run xxx.yaml -c config.py -d out_dir

xxx.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的是如何工作的。


在执行必要的初始化工作之后,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是真正的点。


WA扩展功能分析 workloads dhrystone

dhrystone最初是用来进行CPU性能测试,这里主要用来产生100%的负荷。


可以设置duration或者mloops指定执行时间,threads指定启动多少个dhrystone线程。


delay可以在dhrystone进程间阶梯启动。


Antutu

针对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

执行测试,获取数据 wa run ipa_tunning.yaml 基于ipynb_notebook生成分析结果

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/588313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存