1. 背景
这里涉及到两个工具analyze_suspend.py和Workload Automation。
下面analyze_suspend.py简称为ASPY,Workload Automation简称为WA。
ASPY着重于对Suspend/Resume流程进行分析,然后得出每个阶段的分析结果。对流程进行优化,流程越短也就意味着更低的功耗。
WA是ARM维护的用于自动产生特定负荷,然后进行测试,获取结果并给出分析结果的自动化工具。
将ASPY融入WA,有助于对Suspend/Resume进行自动化分析,并且获取批量分析结果。
1.2 ASPY介绍
在《Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比》中使用analyze_suspend.py对HiKey的suspend/resume进行量化,并进行了优化。
ASPY官网:https://01.org/zh/suspendresume
代码维护:https://github.com/01org/pm-graph/
官网维护在ANALYZE SUSPEND,Home对ASPY的能做什么?有什么益处?适用于谁?进行了介绍。
Overview对如何使用ASPY进行优化进行了解读。
Getting Started详细介绍了如何使用ASPY,包括Downloading、Configure kernel、Configure command line、Usage等等。
News&Blogs是一些案例的介绍。
1.3 WA介绍
WA是用于Linux或Android平台执行workload,并且测量结果、分析输出报告。
《Workload Automation分析及其使用》中对WA进行了分析并给出了一个简单示例。
3. 基于WA对ASPY进行自动化
将ASPY融入进WA大概分为两部分,一部分是创建workload,另一部分是创建分析结果的result_processor。
3.1 创建Suspend Workload
执行suspend workload,需要借助于RTC作为Resume源;对/sys/power/state写入mem/freeze触发suspend流程,然后等待RTC设备超时唤醒触发resume流程。
同时需要在在触发suspend流程之前,清空ftrace和dmesg,并设置好Tracepoints;在resume流程之后,保存ftrace和dmesg。
3.1.1 关于class Workload
class Workload是所有workloads的基类,其中主要成员如下:
paramenters是此Workload的参数。
setup是Workload的配置工作,在run之前。
run是执行此Workload的核心。
update_result在run之后获取测试结果。
teardown做一些收尾工作。
validate在Workload开始前进行一些有效性验证。