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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM