zoukankan      html  css  js  c++  java
  • Workload Automation分析及其使用

    1. 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:是针对待测设备的配置。

    首先配置好Devices,然后开始运行Workloads,同时可以通过Instruments手机测试数据,最后通过Result_processors进行后期处理。 

    2. 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相关的扩展都可以在这里配置。

    image

    wa list workloads/commands/devices/instruments/modules/resource_getters/result_processors/-------------------显示当前WA扩展功能列表。
    
    wa show xxx-----------------显示扩展功能的详细信息。
    
    wa create workload/package/agenda----------------建一个新WA workload/package/agenda。
    
    wa get-assets----------------下载WA以来的外部扩展。

    3. WA框架分析

    _images/wa-execution.png

    从上面的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是真正的点。

    4. WA扩展功能分析

    4.1 workloads

    列出所支持的workload,其中大部分都是Android平台特有的,一小部分是Linux通用的。

    wa list workloads

    扩展自己的Workload

    wa create workload -h---------------------------------查看新建workload的帮助信息
    wa list workloads-------------------------------------查看是否有重名workload
    wa create workload suspend -p wlauto/workloads/ -v----创建名为suspend的workload

      

    4.2 instruments

    wa list instruments列出WA支持的设备,这里的设备可能指实体的energy_probe、hwmon也可能指虚拟的dmesg等等。

    它的主要用途就是通过不同渠道获取WA执行时的数据,比如trace、dmesg、功耗数据等等。

    ...
    cpufreq: Collects
    dynamic frequency (DVFS) settings before and after workload execution. ... sysfs_extractor: Collects the contest of a set of directories, before and after workload execution and diffs the result. systrace: This instrument uses systrace.py from the android SDK to dump atrace output. trace-cmd: trace-cmd is an instrument which interacts with ftrace Linux kernel internal tracer

    trace-cmd

    cpufreq

    energy_probe

    如何添加自己的Instruments

    首先所有的Intruments都是类Instrument的子类,在core/instrumentation.py中有新建Instrument的详细指导。

    首先必须有个名字,然后必须有两个参数(self, context)。

    然后还有一些方法需要实现:

    setup-在Workload setup之后进行Instrument的必要设置。

    start-在Worload start之前进行调用,这里Instrument的测量就已经开始。

    stop-在Worload停止执行后调用。

    update_result-在Worload更新自己执行结果后调用。

    teardown-在Workload teardown之后调用。

    4.3 result_processors

    在Workload或者Instrument更新完结果之后,就需要调用Result_processor进行处理。

     

    5. 一个基于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,专门生成图形化报表。

    image

    trappy.summary_plots实现了一系列针对IPA的图表:

    IPA的主要功能就是控制CPU温度,可以通过降低频率等措施来cooling。

    可以看到CUP的温度得到了很好的,控制

    1

    下面IPA Governor的核心PID控制器的图表,也很直观地反映了P、I、D三个参数变化情况,以及PID控制器的输出。

    4

    下面图表反映了cpufreq的统计信息。

    5

    参考资料:

    Workload Automation:http://pythonhosted.org/wlauto/index.html

    trappy:https://github.com/ARM-software/trappy

  • 相关阅读:
    PHP闭包的用法
    composer相关命令
    keepalievd
    docker-compose
    rabbitmq 知识点
    免费的mysql客户端管理工具
    git生成密钥
    rabbitmq在docker下进行cluster
    http状态码
    vmplayer固定IP
  • 原文地址:https://www.cnblogs.com/arnoldlu/p/6234749.html
Copyright © 2011-2022 走看看