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

Workload Automation分析及其使用的更多相关文章

  1. 在Workload Automation中实现suspend分析

    1. 背景 这里涉及到两个工具analyze_suspend.py和Workload Automation. 下面analyze_suspend.py简称为ASPY,Workload Automati ...

  2. Power Management开发的一般流程

    本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 开发流程 针对一个PM feature进行开发,设计模型是第一步.模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化. ...

  3. Linux下Power Management开发总结

    本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 1. 前言 在 <开发流程>中介绍了PM开发的一般流程,重点是好的模型.简单有效的接口参数.可量化的测试环境以及可独性强的输出 ...

  4. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  5. Cryptographic method and system

    The present invention relates to the field of security of electronic data and/or communications. In ...

  6. Self-Driving Database

    最近一直在做 ML in Database 相关的工作.偶然发现CMU 19spring的15-721课程竟然专门安排了这个专题,不禁欣喜若狂,赶紧去学习了一下. Andy提出了self-drivin ...

  7. 国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?

    作者 | 王骜 来源 | Serverless 公众号 导读 ​ USENIX ATC (USENIX Annual Technical Conference) 学术会议是计算机系统领域的顶级会议,入 ...

  8. "Class does not support Automation or does not support expected interface"数据库连接错误问题分析与解决

    1,故障现象 本人编译的英文版程序在本机上运行OK,换台电脑运行,发现启动时连接数据库出错. 错误信息如下: --------------------------- Error start datab ...

  9. 关于开放式CNC系统实时软件控制系统的一些简单分析

    随笔: 黄杰U201310771 首先,我们一起了解或复习两个概念:开放式CNC和开放式CNC体系结构.按照工EEE规定:一个开放式的系统必须具备不同应用程序能很好地运行于不同供应商提供的不同平台之上 ...

随机推荐

  1. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  2. 关于 WP 开发中.xaml 与.xaml.cs 的关系

    今天我们先来看一下在WP8.1开发中最长见到的几个文件之间的关系.比较论证,在看这个问题之前我们简单看看.NET平台其他两个不同的框架: Windows Forms 先看看Window Forms中的 ...

  3. C# async/await 使用总结

    今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理. 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经开始执行.该方法在调用时,即刻执行了一部 ...

  4. Redis(li)

    一.Redis基础介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset ...

  5. Redis主从复制

    大家可以先看这篇文章ASP.NET Redis 开发对Redis有个初步的了解 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此 ...

  6. 高效 Java Web 开发框架 JessMA v3.4.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  7. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  8. 3.3 js函数

    1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...

  9. 3.2 js六大数据类型

    js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型(Object). 前面说到js中变量是松散类型的,因此有时候 ...

  10. SVG动画

    动画原理 SVG动画,就是元素的属性值关于时间的变化. 如下图来说,元素的某个属性值的起始值(from)到结束值(to)在一个时间段(duration)根据时间函数(timing-function)计 ...