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: ] |
执行测试,获取数据
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
Workload Automation分析及其使用的更多相关文章
- 在Workload Automation中实现suspend分析
1. 背景 这里涉及到两个工具analyze_suspend.py和Workload Automation. 下面analyze_suspend.py简称为ASPY,Workload Automati ...
- Power Management开发的一般流程
本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 开发流程 针对一个PM feature进行开发,设计模型是第一步.模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化. ...
- Linux下Power Management开发总结
本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 1. 前言 在 <开发流程>中介绍了PM开发的一般流程,重点是好的模型.简单有效的接口参数.可量化的测试环境以及可独性强的输出 ...
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
- Cryptographic method and system
The present invention relates to the field of security of electronic data and/or communications. In ...
- Self-Driving Database
最近一直在做 ML in Database 相关的工作.偶然发现CMU 19spring的15-721课程竟然专门安排了这个专题,不禁欣喜若狂,赶紧去学习了一下. Andy提出了self-drivin ...
- 国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?
作者 | 王骜 来源 | Serverless 公众号 导读 USENIX ATC (USENIX Annual Technical Conference) 学术会议是计算机系统领域的顶级会议,入 ...
- "Class does not support Automation or does not support expected interface"数据库连接错误问题分析与解决
1,故障现象 本人编译的英文版程序在本机上运行OK,换台电脑运行,发现启动时连接数据库出错. 错误信息如下: --------------------------- Error start datab ...
- 关于开放式CNC系统实时软件控制系统的一些简单分析
随笔: 黄杰U201310771 首先,我们一起了解或复习两个概念:开放式CNC和开放式CNC体系结构.按照工EEE规定:一个开放式的系统必须具备不同应用程序能很好地运行于不同供应商提供的不同平台之上 ...
随机推荐
- ASP.NET Core 整合Autofac和Castle实现自动AOP拦截
前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...
- Rafy 框架 - 流水号插件
Rafy 框架又添新成员:流水号插件.本文将解释 Rafy 框架中的流水插件的场景.使用方法. 场景 在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下 ...
- shell 带签名请求,yii 处理带签名的请求
处理请求 class TestController extends Controller { public function init() { if(!YII_ENV_DEV){ throw new ...
- MySQL实现两张表数据的同步
有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录.两张表的结构不同,需要将其中几个字段对应起来.可以用下面的触发器实现. 表A的触发 ...
- Java泛型
什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个 ...
- 【转】gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...
- Jsp语法简介
1.JSP指令 jsp指令用来设置整个JSP网页想关闭的属性,如网页的编码和脚本语言等.常用的3种指令为page,include和taglib. 2.JSP声明 jsp声明用于声明JSP代表的Serv ...
- struts2中从后台读取数据到<s:select>
看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...
- 关于addSubView需要注意的事项 -今天吃了一个大亏
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中. - (void) ...
- css属性兼容主流浏览器
目前,对于网页中一些浏览器兼容性问题,可以使用css hack(css 招数)和浏览器Bug修复的方式解决. 名词解释: css Hack:针对特定浏览器编写冗余代码,这是一种欺骗浏览器的行为,预示着 ...